题目
答案
#include<stdio.h>
#include<math.h>
int check(long int x)
{
if(x==2) return 1;
for(long int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main()
{
long int n;
scanf("%ld",&n);
if(n==1)
{
printf("1=1");
return 0;
}
else if(check(n))
{
printf("%d=%d",n,n);
return 0;
}
long int count[10000],flag[10000],cnt=0,k=0;
long int i;
for(i=2;i<=sqrt(n);i++)
{
if(check(i)&&n%i==0)
{
long int temp=n;
while(temp%i==0)
{
cnt++;
temp=temp/i;
}
flag[k]=i;
count[k]=cnt;
k++;
cnt=0;
}
}
if(k==0) return 0;
printf("%ld=",n);
for(i=0;i<k;i++)
if(i==0)
{
if(count[i]==1) printf("%ld",flag[i]);
else printf("%ld^%ld",flag[i],count[i]);
}
else
{
if(count[i]==1) printf("*%ld",flag[i]);
else printf("*%ld^%ld",flag[i],count[i]);
}
}
注意
要注意n=1以及n本身就是素数这两种情况