Lightoj1028【计算约数个数】
来源:互联网 发布:淘宝心级怎么算 编辑:程序博客网 时间:2024/06/06 15:53
思路:
最终就是求一个数的约数(除了1)对吧.
然后想要枚举sqrt(N)受阻,枚举素数数组受阻,加上prime[i]*prime[i]<=n就好了?那就好了吧。
#include <bits/stdc++.h>using namespace std;typedef long long LL;LL prime[1000100];bool IsPrime[1000100];int num;void init_prime(){ num=0; memset(IsPrime,false,sizeof(IsPrime)); for(LL i=2;i<=1000000;i++) { if(IsPrime[i]) continue; prime[num++]=i; for(LL j=i+i;j<=1000000;j+=i) IsPrime[j]=true; }}LL solve(LL n){ LL ans=1,sum; for(int i=0;i<num&&prime[i]*prime[i]<=n;i++) { LL tmp=prime[i]; sum=0; if(n%tmp==0) { while(n%tmp==0) { n/=tmp; sum++; } ans*=(sum+1LL); } } if(n>1) ans*=2; return ans-1;}int main(){ int cas=1,T; LL n; init_prime(); scanf("%d",&T); while(T--) { scanf("%lld",&n); printf("Case %d: %lld\n",cas++,solve(n)); } return 0;}
0 0
- Lightoj1028【计算约数个数】
- 【lightoj1028】求因子个数
- 约数个数
- 约数个数
- 约数个数
- 约数个数
- 约数个数
- 计算n个数的最大共约数和最小公倍数
- 约数个数及约数和
- 求约数个数问题
- OJ:约数个数
- OJ_1087 约数的个数
- 约数个数定理
- 约数个数定理
- 算法提高 约数个数
- 算法提高 约数个数
- 算法提高 约数个数
- 约数个数 --- 蓝桥杯
- docker 镜像与容器存储目录结构精讲
- 菜鸟出没,oracle的左连接,右连接
- HttpServletRequest与HttpServletResponse
- centos中Solr的安装及配置
- 主成分分析(Principal Component Analysis,PCA)是什么作用?
- Lightoj1028【计算约数个数】
- 一次 mysql 启动错误
- Android RecyclerView初体验
- Lucky Number
- 博弈题目小结
- 兔子的烦恼(一)
- Tensorflow的基本用法
- 【数据结构实训】1002括号匹配判断算法
- Java-设计模式学习笔记-总结