您的位置:首页 > 其它

题目54:质因数的个数

2013-03-06 11:33 141 查看
http://ac.jobdu.com/problem.php?cid=1040&pid=53

题目描述:
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。

输入:

可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。

输出:

对于每组数据,输出N的质因数的个数。

样例输入:
120


样例输出:
5


提示:

注意:1不是N的质因数;若N为质数,N是N的质因数。

// 题目54:质因数的个数.cpp: 主项目文件。

#include "stdafx.h"
#include <cstdio>
#include <cstring>

const int N=31650;
bool used
;

void selectPrime()
{
memset(used,0,sizeof(used));
used[0]=used[1]=true;
for(int i=2;i<N;i++)
{
if(!used[i])
{
for(int j=i+i;j<N;j+=i)
used[j]=true;
}
}
}

int primeBaseCount(int n)
{
int ans=0;
for(int i=2;i<N;i++)
{
if(n==1)
break;
if(!used[i])
{
while(n%i==0)
{
ans++;
n/=i;
}
}
}
if(n!=1)
ans+=1;
return ans;
}

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int res=primeBaseCount(n);
printf("%d\n",res);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: