patA1059的修改,需要考虑特殊值

#include
#include
#include
using namespace std;


struct factor{
int x;
int cnt;
}fac[10];


const int maxn=100010;
int prime[maxn],primenum=0;
bool isprime[maxn];
void findprime(){
for(int i=2;i if(isprime[i]==false){
prime[primenum++]=i;
for(int j=i+i;j isprime[j]=true;
}
}
}
}
int main(int argc, char** argv) {
int n,num=0;
scanf("%d",&n);
int ans=n;
int idex=0;
findprime();
for(int i=0;i<=sqrt(1.0*n);i++){
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;
}
if(ans==1)  printf("1=1");
else{
printf("%d=",ans);
for(int i=0;i printf("%d",fac[i].x);
if(fac[i].cnt>1){
printf("^%d",fac[i].cnt);
}
if(i!=num-1) printf("*");
}
}


return 0;
}

你可能感兴趣的:(patA)