题目描述
给定正整数 n,请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一个整数,表示 n 的质数约数个数。
样例输入
396
样例输出
3
#include<bits/stdc++.h>
int main()
{
long long n,ans = 0,i;
int sum;
scanf("%lld",&n);
for(i = 2;i*i<= n && n != 1;i++){ //index * index <= n这个条件是重点,如果没有这个条件会超时
sum = 0;
while(n % i== 0){
sum++;
n /= i;
}
if(sum)
{
ans++;
}
}
if(n != 1){
ans++; //说明存在一个大于sqrt(n)的质因数,且有且仅有一个,所以要+1
}
printf("%lld",ans);
return 0;
}