c语言的素数函数问题出现的小bug

C语言素数问题

#include 

int isPrime(int x, int knownPrimes[], int numberOfKnownPrimes)
{
    int ret;
    int i;
    for (i = 0; iif (x % knownPrimes[i] == 0){
            ret = 0;
            break;
        }
    }
    return ret;
}

int main()
{
    const int number = 100;
    int prime[number] = { 2 };
    int count = 1;
    int i = 3;
    while (countif (isPrime(i, prime, count)){
            prime[count++] = i;
        }
        i++;
    }
    for (i = 0; iprintf("%d", prime[i]);
        if ((i + 1) % 5) printf("\t");
        else printf("\n");
    }
    return 0;
}

这个代码究竟是啥问题,编译没有报错,但运行时总报错。调试也无法进行
  • isPrime中 ret 没有初始值,应该赋值为 1
  • 参考如下:
#include<stdio.h>
int isPrime(int x, int knownPrimes[], int numberOfKnownPrimes)
{
    int ret = 1; // ret 要赋值为1
    int i;
    for (i = 0; i<numberOfKnownPrimes; i++){
        if (x % knownPrimes[i] == 0){
            ret = 0;
            break;
        }
    }
    return ret;
}
 
int main()
{
    int number = 100;
    int prime[100] = { 2 }; 
    int count = 1;
    int i = 3;
    while (count<number){
        if (isPrime(i, prime, count)){
            prime[count++] = i;
        }
        i++;
    }
    for (i = 0; i<number; i++){
        printf("%d", prime[i]);
        if ((i + 1) % 5) printf("\t");
        else printf("\n");
    }
    return 0;
}


如有帮助,欢迎点赞+采纳哈!

把ret赋值为一就好了