这个题目按照平常的判断写法非常容易超时。
#include<bits/stdc++.h>
using namespace std;
int sushu(long long x)//判断是否为素数
{
if(x == 1) return 0;
if(x == 2) return 1;
for(int i = 2; i <= sqrt(x); i ++)
{
if(x % i == 0) return 0;
}
return 1;
}
int main()
{
long long x, ans = 0;
cin >> x;
for(int i = 1; i <= sqrt(x); i ++)
{
if(x % i == 0)
{
if(sushu(i) == 1) ans ++;
if(i != x/i)
{
if(sushu(x/i) == 1)
ans ++;
}
}
}
cout << ans;
return 0;
}