显然$n$的每个约数都可以质因数分解,故将$n$分解质因数即可,时间复杂度$O(\sqrt{n})$。
C++代码:
#include<iostream>
using namespace std;
typedef long long LL;
LL n;
int main()
{
scanf("%lld", &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 ++;
printf("%lld", res);
return 0;
}
不用担心超时吗,y总不是说要控制到10的7次方嘛(虽然题目是2s)
$10^8$ 应该是 C++ 一秒的极限了,题目有 2s 完全够用
为啥for循环中用 int i 最后一个测试点过不了。
对啊,我也感觉有点奇怪啊, i 最多循环到10^8 ,不会超时啊
别加多了头文件,只留一个头文件,不然调用头文件也会占用时间
哥们一个是调试时间,一个是运行时间不一样的,用万能头一样过,只是调试的时候要等一俩秒有点难受
int 和 n / i 一起用有问题