给定某个正整数 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; }