代码之家  ›  专栏  ›  技术社区  ›  user1445218

试图查找素数的浮点异常

  •  0
  • user1445218  · 技术社区  · 10 年前

    我有一个生成素数的程序。当我需要前100和200个素数时,这段代码可以正常工作,但当我使用总计300以上的值时,就会出现浮点异常。问题似乎在阵列中,但我不知道发生了什么。

    #include<stdio.h>
    
    int main()
    {
        int total = 500;
        int primes[total];
        primes[0] = 2;
        int max = 1;
        int current = 3;
        int index = 0;
        printf("%d\n",2);
        while(max != total)
        {
            for(index = 0; index <= max + 1; index++)
            {
                if(index == max + 1){
                    primes[index] = current;
                    printf("%d\n",current);
                    max = max + 1;
                    current = current + 1;
                    break;
                } else {
                    if(current % primes[index] == 0){
                        current = current + 1;
                        break;
                    }
                }
            }
        }
    }
    
    2 回复  |  直到 10 年前
        1
  •  4
  •   ouah    10 年前

    你必须确保 current % primes[index] 从未使用 0 的值 primes[index] A. 0 值作为的右操作数 % 运算符调用C中未定义的行为。

        2
  •  0
  •   Steve    10 年前

    enter image description here

    您的访问超出了primes[]的结尾,在调试器中,您将编写primes[index],其中index==500。primes[500]不存在

    推荐文章