游客 Signup | Login
中文 | En

1519 - 质因数的个数

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

Input

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

Output

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

Examples

Input

120
200

Output

5
5

Hint

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

Solution C

#include<stdio.h>    
int main()
{
    int i,j,b,a[3500],n,m,flag,sum;
	m=0;
	for(i=2;i<=31623;i++)
	{
        a[0]=2;
		flag=1;        
		for(j=0;j<=m;j++)
		{
			if(i%a[j]==0)
				flag=0;
		}
		if(flag)
		{
			m++;
			a[m]=i;
		}
	}
    while(scanf("%d",&n)!=EOF&&n)
    {
		sum=0;
        for(i=0;i<=m;i++)
        {
            while(n%a[i]==0)
            {
                n/=a[i];
                if(n!=1)sum++;
                if(n==1){sum++;break;}
            }
        }
        if(n>31623)sum++;
		printf("%d\n",sum);
    }
    return 0;
}

Solution C++

#include<stdio.h>
#include<math.h>

int main ()
{
	long long n,i,k;
	while(scanf("%lld",&n)!=EOF)
	{
		for(k=0,i=2;i<=sqrt(n);i++)
			while(n%i==0)
			{
				k++;
				n/=i;
			}
		if(n!=1)
			k++;
		printf("%lld\n",k);
	}
	return 0;
}

Hint

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

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题