给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式
N=p1k1p2k2…*pmkm
输入格式:
输入long int范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1k1p2k2…*pmkm,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。
输入样例:
1323
输出样例:
1323=3^3*7^2
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
long int N;
int num[1000000][2];
int i,j,k=0;
int flag=1;
for(i=0; i<1000000; i++) {
num[i][1]=0;
}
scanf("%ld",&N);
printf("%ld=",N);
if(N==1) {
printf("1");
}
for(i=2; i<10000; i++) {
int f=1;
for(j=2; j<i; j++) {
if(i%j==0) {
f=0;
break;
}
}
if(f==1) {
num[k][0]=i;
k++;
}
}
for(i=0; i<k; i++) {
while(N%num[i][0]==0) {
N=N/num[i][0];
num[i][1]++;
}
if(num[i][1]!=0) {
if(flag==0) {
printf("*");
}
if(num[i][1]==1) {
printf("%d",num[i][0]);
} else {
printf("%d^%d",num[i][0],num[i][1]);
}
flag=0;
}
if(N==1) {
break;
}
}
return 0;
}