每乙個大於1的正整數都可被唯一的寫成素數的乘積。證明過程有點複雜,但是道理還是很容易講通的,因為每個大於1的數都有乙個素因子,因此我們先用最小的素數2分解(如果因數有2的話),直到不能分解時,選用下乙個素數繼續分解。以780為例,此時得到780=2*360,對360還可以進行3次公因數2的提取,得到45,然後再從3開始分解,直到待分解的數為素數時停止。
在數學上素因子分解可以幫助我們尋找多位數的最大公因數和最小公倍數。
後續的思考:這個**的問題還是很多的,有些做法是用遞迴做的,個人覺得遞迴會比迭代更好。另外,仔細想想其實is_prime這個函式是 完全不需要的
#include
#include
#include
intis_prime
(int n)
;int
main()
printf
("%d^%d*"
,i,n);}
else
}else
}return0;
}int
is_prime
(int n)
}return1;
}
分解素因子
time limit 1500ms memory limit 10000k 有疑問?點這裡 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包...
PTA 素因子分解
n,求其素因子分解結果,即給出其因式分解表示式 n p 1 k 1 p 2 k 2 p m k m 輸入long int範圍內的正整數 n。按給定格式輸出n的素因式分解表示式,即n p1 k1 p2 k2 pm km,其中pi為素因子並要求由小到大輸出,指數ki為pi的個數 當ki為1即因子pi只有...
2 07 素因子分解(20)
給定某個正整數n,求其素因子分解結果,即給出其因式分解表示式 n p1 k1 p2 k2 pm km。輸入格式說明 輸入long int範圍內的正整數n。輸出格式說明 按給定格式輸出n的素因式分解表示式,即 n p1 k1 p2 k2 pm km,其中pi為素因子並要求由小到大輸出,指數ki為pi的...