給定某個正整數 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
代碼:
#include <cstdio> #include <iostream> #define inf 0x3f3f3f3f using namespace std; bool ispri(int k) { if(k <= 1) return false; if(k <= 3) return true; if(k % 6 != 1 && k % 6 != 5) return false; for(int i = 5;i < k / i;i += 6) { if(k % i == 0 || k % (i + 2) == 0) return false; } return true; } int main() { int n,flag = 0; scanf("%d",&n); printf("%d=",n); if(n == 1) printf("1"); for(int i = 2;i <= n;i ++) { if(!ispri(i) || n % i) continue; int c = 0; while(n != 1 && n % i == 0) { c ++; n /= i; } if(flag) printf("*"); else flag = 1; if(c > 1) printf("%d^%d",i,c); else printf("%d",i); } return 0; }