時間限制: 1 sec 記憶體限制: 32 mb
提交: 685 解決: 273
求正整數n(n>1)的質因數的個數。
相同的質因數需要重複計算。如120=22235,共有5個質因數。
可能有多組測試資料,每組測試資料的輸入是乙個正整數n,(1對於每組資料,輸出n的質因數的個數。
120200
5注意1不是n的質因數;若n為質數,n是n的質因數。5
先用篩法列印素數表,定義factors結構然後再第乙個素數到sqrt(n)的範圍遍歷,找到了就更新factor,再不斷除,根據演算法筆記的內容,乙個數只有兩種情況,第一種全是sqrt(n)以內的質因子,另外一種只有乙個sqrt(n)以外的質因子 ,所以除完之後可以根據n是否等於1判斷,若不等於1,這時的n本身就是那個質因子,記入更新factor即可。
#include
#include
#include
#include
using
namespace std;
const
int maxn=
111010
;int prime[maxn]
,nump=0;
bool flag[maxn]=;
struct facto***ctors[10]
;bool
isprime
(int n)
return
true;}
void
find_prime
(void)}
}}intmain()
num++;}
}if(n>1)
int sum=0;
for(
int i=
0;i)printf
("%d\n"
,sum);}
return0;
}
1947 Problem C 質因數的個數
時間限制 1 sec 記憶體限制 32 mb 求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1 對於每組資料,輸出n的質因數的個數。120 2005 5注意1不是n 的質因數 若 n為...
分解質因數
質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...
分解質因數
分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...