解题思路:
这个题讲一个通俗的思路,首先由于数据巨大,最大的一个问题就是超时,所以必然不能使用传统的思路,
这里可以理解为,我们从最小的质数来分数据,(定理一定可以拆分成多个质数的乘积)在这个质数上将数据切分到极限,就是不能再切分为止,这其实就是在排除这个质数倍数的所有数据。并且数据也减小了
注意事项:
收尾工作,就是最后可能由单个质数组成
参考代码:
#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语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:892 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:593 |
字符串的输入输出处理 (C语言代码)浏览:963 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1244 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:592 |
简单的a+b (C语言代码)浏览:622 |
【蟠桃记】 (C语言代码)浏览:1046 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2095 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:411 |
printf基础练习2 (C语言代码)浏览:515 |