題目描述
輸入描述:
可能有多組測試數據,每組測試數據的輸入是一個正整數N,(1<N<10^9)。
輸出描述:
對於每組數據,輸出N的質因數的個數。
輸入
120
輸出
5
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int prime[100001];
int primesize=0;
bool mark[100001];
//素數篩算法,相當於在研究素數問題之前首先建立一個素數表。
void init()
{
for(int i=0;i<10000;i++)
mark[i]=false;//初始化Mark爲false
for(int i=2;i<=100001;i++)
{
if(mark[i]==true)continue;
prime[primesize++]=i;
if(i>1000)continue;
for(int j=i*i;j<=100000;j+=i) //將素數的倍數全部都置成true
{
mark[j]=true;
}}}
int main()
{
int n,count;
init();
while(cin>>n)
{
count=0;
for(int i=0;i<primesize;i++)
{
while(n%prime[i]==0)
{
count++;
n=n/prime[i];
}}if(n!=1)count++;//當最後n不是1的時候說明還有一個大的素因子,最後的count+1
cout<<count<<endl;
}
return 0;
}