题意:
是输入N,2<=N<=100000,求N的质因子个数。
样例输入
12
5
30
样例输出
2
1
3
提示
12 = 2 * 2 * 3
5 = 5
30 = 2 * 3 * 5
解题思路:
就写个判断质数的函数,循环判断就可以,不过不是质数就加,是不同的质数。
具体代码:
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
bool temp[100000];
bool Try(int n)//判断素数
{
if(n==2)
return true;
for(int i=2;i<n;i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
int n;
int num,sum;
while(cin>>n)
{
sum=0;
num=2;
memset(temp,false,sizeof(temp));
while(n)
{
if(n==1)
break;
if(Try(num)&&n%num==0)
{
n/=num;
temp[num]=1;
}
else
{
num++;
}
}
for(int i=0;i<=100000;i++)
if(temp[i])
sum++;
cout<<sum<<endl;
}
system("pause");
return 0;
}
zzuli训练赛_05_13-K
时间: 2024-10-03 14:02:19