#include <stdio.h>
#include<math.h>
int ipow(int,int);
int isprime(int);
int main() {
int n,i,j,k,cnt=0;
scanf("%d",&n);
j=n;
printf("%d=",j);
for(i=2;i<=j;i++){
if(isprime(i)){
cnt=0;
while(n%i==0&&n!=1){
n/=i;cnt++;
}
if(cnt>1){
k=ipow(i,cnt);
if(n==j/k)printf("%d^%d",i,cnt);
else printf("*%d^%d",i,cnt);
}
else if(cnt==1) {
if(n!=j/i)printf("*%d",i);
else printf("%d",i);
}
}
}
printf("\n");
return 0;
}
int ipow(int a,int b){
int o,p=a;
for(o=0;o<b-1;o++)a*=p;2
return a;
}
int isprime(int n){
int i,w=1;
for(i=2;i<=sqrt(n);i++){
if(n%i==0)w=0;break;
}
return (w=0?0:1);
}
注意:
1 pow 库函数里为double类型,不要直接运算;算乘方的时候,是自己相乘n-1次,别写成a*=a。
2 换行符放最后的最后,不用在讨论里讨论这个数是不是最后一个。只需要讨论这个数或这一组数是不是第一个。