C语言高手帮忙看看这道题的答案有什么错误,提交到自动评测系统里总是说错误,附上题目和我的答案,谢谢

2025-05-07 04:28:19
推荐回答(2个)
回答1:

我来教你。我要悬赏分哟,我可是穷人。。。新手


帮你搞定了,只需要改动一个语句就好了。

#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;

}

回答2:

貌似isPrime函数里sqrt函数不支持,你用i*i<=num试试吧

for(i = 2;i*i <= num; i++)