质因数的个数
来源:互联网 发布:linux vi 批量删除 编辑:程序博客网 时间:2024/06/07 05:43
题目描述
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出
对于每组数据,输出N的质因数的个数。
样例输入
120200
样例输出
55
提示
注意1不是N的质因数;若N为质数,N是N的质因数。
#include <cstdio>#include <cmath>const int maxn=10001;int prime[maxn],pnum=0;int vis[maxn]={0};struct factor{ int x,cnt;}fac[10];void find_prime(){ int m=round(sqrt(maxn-1)); for(int i=2;i<=m;i++) if(!vis[i]) for(int j=i*i;j<maxn;j+=i) vis[j]=1; for(int i=2;i<maxn;i++) if(!vis[i]) prime[pnum++]=i;}int main(){ find_prime(); int n; while(scanf("%d",&n)==1){ int m=round(sqrt(n)); int num=0; for(int i=0;i<pnum&&prime[i]<=m;i++){ if(n%prime[i]==0){ fac[num].x=prime[i]; fac[num].cnt=0; while(n%prime[i]==0){ fac[num].cnt++; n/=prime[i]; } num++; } if(n==1) break; } if(n!=1){ fac[num].x=n; fac[num++].cnt=1; } int ans=0; for(int i=0;i<num;i++) ans+=fac[i].cnt; printf("%d\n",ans); } return 0;}
阅读全文
0 0
- 清华大学 质因数的个数
- 质因数的个数
- 质因数的个数
- 题目54:质因数的个数
- 题目1137: 质因数的个数
- 题目1207:质因数的个数
- 题目1207:质因数的个数
- 题目1207:质因数的个数
- 题目1207:质因数的个数
- 题目1207:质因数的个数
- TOJ 5271: 质因数的个数
- N!中含有质因数2的个数
- 九度OJ 1207: 质因数的个数
- 质因数能分解出的最高个数
- 九度OJ 1207 质因数的个数
- 九度题目1207:质因数的个数
- 九度OJ 1207:质因数的个数
- 54-题目1207:质因数的个数
- SpringBoot比较好的GitHub资源
- HDU
- android-java Error:(29, 37) 错误: 程序包org.apache.http.client.entity不存在
- 临时撤销段(TEMPORARY UNDO)
- JVM介绍
- 质因数的个数
- 传输数据库升级11.2.0.3 DG集群到12.2
- 647. Palindromic Substrings
- Java--变量
- HashMap的工作原理【面试】
- FTPrep, 73 Set Matrix Zeroes
- thinking in java——复用类
- 【算法设计作业】week3
- GIT学习笔记