题目:
AC代码:
#include<cstdio>
#include<cmath>
const int maxn=100000;
int prime[maxn];
bool hashprime[maxn]={false};
int t=1;
void findprime(){
for(int i=2;i<maxn;i++){
if(hashprime[i]==false){
prime[t++]=i;
for(int j=i+i;j<maxn;j+=i){
hashprime[j]=true;
}
}
}
}
struct factor{
int x;
int cnt;
}fac[10];
int main(){
findprime();
int n;
while(scanf("%d",&n)!=EOF){
if(n==1){
printf("1=1\n");
continue;
}
int nn=n;
int num=1;
int p=sqrt(n);
for(int i=1;i<t;i++){
if(prime[i]<=p){
if(n%prime[i]==0){
fac[num].x=prime[i];
fac[num].cnt=0;
while(n%prime[i]==0){
fac[num].cnt++;
n/=prime[i];
}
num++;
}
}
}
if(n!=1){
fac[num].x=n;
fac[num++].cnt=1;
}
printf("%d=",nn);
for(int i=1;i<num;i++){
if(fac[i].cnt>1){
if(i==num-1){
printf("%d^%d\n",fac[i].x,fac[i].cnt);
}
else{
printf("%d^%d*",fac[i].x,fac[i].cnt);
}
}
else if(fac[i].cnt==1){
if(i==num-1){
printf("%d\n",fac[i].x);
}
else{
printf("%d*",fac[i].x);
}
}
}
}
return 0;
}