解题思路:
这个题讲一个通俗的思路,首先由于数据巨大,最大的一个问题就是超时,所以必然不能使用传统的思路,
这里可以理解为,我们从最小的质数来分数据,(定理一定可以拆分成多个质数的乘积)在这个质数上将数据切分到极限,就是不能再切分为止,这其实就是在排除这个质数倍数的所有数据。并且数据也减小了
注意事项:
收尾工作,就是最后可能由单个质数组成
参考代码:
#include<iostream> #include<cmath> using namespace std; typedef long long ll; ll check(ll x) { ll temp=x,cnt=0; for(int i=2;i<=sqrt(temp)&&temp>1;i++) { if(temp%i==0) cnt++; while(temp%i==0) { temp/=i; } } if(temp>1) cnt++; return cnt; } int main() { ll n; cin>>n; cout<<check(n)<<endl; return 0; }
0.0分
0 人评分
点我有惊喜!你懂得!浏览:2214 |
钟神赛车 (C语言代码)浏览:879 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:784 |
printf基础练习2 (C语言代码)浏览:646 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:558 |
C二级辅导-进制转换 (C语言代码)浏览:660 |
一元一次方程 (C语言代码)浏览:4069 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:666 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:1220 |