解题思路:
这个题讲一个通俗的思路,首先由于数据巨大,最大的一个问题就是超时,所以必然不能使用传统的思路,
这里可以理解为,我们从最小的质数来分数据,(定理一定可以拆分成多个质数的乘积)在这个质数上将数据切分到极限,就是不能再切分为止,这其实就是在排除这个质数倍数的所有数据。并且数据也减小了
注意事项:
收尾工作,就是最后可能由单个质数组成
参考代码:
#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语言代码)浏览:800 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1327 |
printf基础练习2 (C语言代码)浏览:826 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:836 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:964 |
母牛的故事 (C语言代码)浏览:739 |
图形输出 (C语言代码)浏览:1422 |
整除的尾数 (C语言代码)浏览:852 |