解题思路:
这个题讲一个通俗的思路,首先由于数据巨大,最大的一个问题就是超时,所以必然不能使用传统的思路,
这里可以理解为,我们从最小的质数来分数据,(定理一定可以拆分成多个质数的乘积)在这个质数上将数据切分到极限,就是不能再切分为止,这其实就是在排除这个质数倍数的所有数据。并且数据也减小了
注意事项:
收尾工作,就是最后可能由单个质数组成
参考代码:
#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 人评分
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:803 |
上车人数 (C语言代码)浏览:1249 |
C语言训练-计算1977!* (C语言代码)浏览:932 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:566 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1544 |
母牛的故事 (C语言代码)浏览:989 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:500 |
wu-理财计划 (C++代码)浏览:893 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:347 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:534 |