問題 C: 質因數的個數

題目鏈接http://codeup.cn/problem.php?cid=100000592&pid=2

題目描述
求正整數N(N>1)的質因數的個數。
相同的質因數需要重複計算。如120=22235,共有5個質因數。

輸入
可能有多組測試數據,每組測試數據的輸入是一個正整數N,(1<N<10^9)。

輸出
對於每組數據,輸出N的質因數的個數。

樣例輸入
120
200

樣例輸出
5
5

代碼

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

const int  maxn = 1000010;
int prime[maxn], pNum = 0;
bool p[maxn] = {0};

void find_primr(int n) {
	int sqr = (int)sqrt(1.0 * n);
	for(int i = 2; i <= sqr; i++) {		
		if(p[i] == false) {
			prime[pNum++] = i;
			for(int j = i + i; j <= sqr; j += i) 
				p[j] = true;			
		}
	}
}

int main() {
	int n, count;
	while(scanf("%d", &n) != EOF) {
		count = 0;
		find_primr(n);
		for(int i = 0; i < pNum; i++) {
			while(n % prime[i] == 0){
				n /= prime[i];
				count++;
			}
		}
		if(n > 1)
			count++;
		printf("%d\n", count);
	}
	return 0;
}
發佈了186 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章