給定某個正整數n,求其素因子分解結果,即給出其因式分解表示式 n = p1^k1 * p2^k2 *…*pm ^km。
輸入格式說明:
輸入long int範圍內的正整數n。
輸出格式說明:
按給定格式輸出n的素因式分解表示式,即 n = p1^k1 * p2^k2 *…*pm ^km,其中pi為素因子並要求由小到大輸出,指數ki為pi的個數;當ki==1即因子pi只有乙個時不輸出ki。
序號 輸入 輸出
1 1024
1024=2^10
2 1323
1323=3^3*7^2
3 97532468
97532468=2^2*11*17*101*1291
4 1
1=1
5 3
3=3
第一種方法:非遞迴程式。
#include
int isprime(int n)
return1;}
int main()
if(1==count)
printf("2");
else
if(count>1)
printf("2^%d",count);
for(i=3;i*i
<=n;i=i+2)
if(1==count)
else if(count>1)
}printf("\n");
}}第二種方法:遞迴演算法
//感覺遞迴寫的有點複雜,還不如非遞迴
#include
int count;//輸出素因子的專案數
int isprime(int n)
return1;}
void fenjie(int remain,int start,int num)
else
if(i*i
<=remain)
if(num==1)
else
if(num>1)
}fenjie(remain,i+1,0);
}}int main()
return
0;}
2 7 素因子分解 20 分
給定某個正整數 n,求其素因子分解結果,即給出其因式分解表示式 輸入格式 輸入long int範圍內的正整數 n。輸出格式 按給定格式輸出n的素因式分解表示式,即 輸入樣例 1323輸出樣例 1323 3 3 7 2我的 include using namespace std long int n ...
分解素因子
time limit 1500ms memory limit 10000k 有疑問?點這裡 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包...
素因子分解
每乙個大於1的正整數都可被唯一的寫成素數的乘積。證明過程有點複雜,但是道理還是很容易講通的,因為每個大於1的數都有乙個素因子,因此我們先用最小的素數2分解 如果因數有2的話 直到不能分解時,選用下乙個素數繼續分解。以780為例,此時得到780 2 360,對360還可以進行3次公因數2的提取,得到4...