我来教你。我要悬赏分哟,我可是穷人。。。新手
帮你搞定了,只需要改动一个语句就好了。
#include
#include
int times(int n,int x)
{
if (n == 0) return 0;
return (n/x) + times (n/x, x);
}
int isPrime(int num)
{
int i;
if( num < 2) return 0;
for(i = 2;i <= sqrt(num); i++) {
if(num % i == 0) return 0;
}
return 1;
}
int main()
{
int i,flag=0,n;
scanf("%d",&n);
if (n == 1) {
printf("1\n");
return 0;
}
for (i = 2; i <= n; i++) {
if (isPrime(i)) {
int counter = times(n, i);
if (counter == 1) {
if (flag) printf("*");
printf("%d", i);
flag = 1;
}else {
if (flag) printf("*");
printf("%d^%d", i, counter);
flag = 1;
}
}
}
printf("\n");
return 0;
}
貌似isPrime函数里sqrt函数不支持,你用i*i<=num试试吧
for(i = 2;i*i <= num; i++)