分解的素数

来源:互联网 发布:战地2网络对战平台 编辑:程序博客网 时间:2024/05/01 08:47

 Description
 定义将一个正整数n分解质因数中素数的个数为f(n)。如18=2*3*3。其中有两个3,一个2。所以f(18)=3。


 Input
 第一行是一个正整数t,表示有t组数据。接下来有t行。
每行有一个正整数n(1<=n<=10000000)。


 Output
 对于每个n,输出f(n)。

 Sample Input
 2
 3 
 18
SampleOutput
 1
 3 

 

代码如下

#include <stdio.h>#include<math.h>#define N 10000000int prime[N + 1] = { 0 };int main(){prime[2] = 1;for (int i = 3; i <= N; i += 2)             //素数打表{prime[i] = 1;}for (int i = 3; i*i <N; i += 2){if (prime[i]){for (int j = i*i; j <= N; j += 2 * i){prime[j] = 0;}}}int t, x, k, cnt;scanf("%d", &t);while (t--){cnt = 0;scanf("%d", &x);for (int j = 2; j <= x; j++){if (prime[j]){while ( x%j == 0){cnt++;x = x / j;}}}printf("%d\n", cnt);}return 0;}



 

 

1 0