算术基本定理:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3......Pnan,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。
一个数能被唯一地分解成质因数的乘积。因此这个定理又叫做唯一分解定理。
#include <cstdio> int main() { unsigned int n; int flag = 0; scanf("%d", &n); int pri[32] = { 0 }; int num[32] = { 0 }; int local = 0; int tmp = 2; while (tmp*tmp <= n) //找出所有的因子 { while (n % tmp == 0) { pri[local] = tmp; num[local]++; n /= tmp; flag = 1; } if (flag) { local++; flag = 0; } tmp++; } int k = 0; while (pri[k]) { if (pri[k + 1] != 0) { if (num[k]>1) printf("%d^%d*", pri[k], num[k]); else printf("%d*", pri[k]); } else { if (num[k]>1) printf("%d^%d*", pri[k], num[k]); else printf("%d", pri[k]); } k++; } if (n != 1) printf("*%d\n", n); return 0; }