给定正整数 n,请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一个整数,表示 n 的质数约数个数。
数据范围
对于 30%30% 的评测用例,1≤n≤10000
对于 60%60% 的评测用例,1≤n≤109
对于所有评测用例,1≤n≤1016
输入样例:
396
输出样例:
3
样例解释
396396 有 2,3,112,3,11 三个质数约数。
经典的分解质因数题目,数据较大,需要longlong,且题目时间要求为2s,所以直接套分解质因数算法模板就可以过
cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
LL n;
cin>>n;
LL res=0;
for(LL i=2;i<=n/i;i++)
{
if(n%i==0)
{
res++;
while(n%i==0)
n/=i;
}
}
if(n>1)
res++;
cout<<res;
}