7-15 素因子分解 (20 分)
給定某個正整數 N,求其素因子分解結果,即給出其因式分解表達式 N=p1k1⋅p2k2⋯pmkm。
輸入格式:
輸入long int范圍內的正整數 N。
輸出格式:
按給定格式輸出N的素因式分解表達式,即 N=p1^k1*p2^k2*…*pm^km
,其中pi
為素因子並要求由小到大輸出,指數ki
為pi
的個數;當ki
為1即因子pi
只有一個時不輸出ki
。
輸入樣例:
1323
輸出樣例:
1323=3^3*7^2
這題的話,暴力去找,如果n的所有素因子被除盡,那此時n等於1,所以后面的也不會有和n有公因子的數了。
立一個flag,這樣第一次的時候我們就不輸出*了,對k進行一下判斷,這是題上的要求,然后再進行輸出,只要按照題目的要求來就基本不會錯。
1 #include <cstdio> 2 #include <iostream> 3 4 int main() 5 { 6 long long n; 7 scanf("%lld",&n); 8 printf("%lld=",n); 9 if (n>1) { 10 int flag = 0; 11 for (int i=2;i<=n;i++) { 12 int k = 0; 13 if (n%i==0) { 14 while (n%i==0) { 15 k++; 16 n /= i; 17 } 18 if (flag) 19 printf("*"); 20 printf("%d",i); 21 flag = 1; 22 if (k>1) 23 printf("^%d", k); 24 } 25 26 } 27 } 28 else { 29 printf("%d", 1); 30 } 31 printf("\n"); 32 system("pause"); 33 return 0; 34 }