【问题标题】:Sieve of Eratosthenes algorithm - works fine but crashes afterEratosthenes 算法筛 - 工作正常,但在之后崩溃
【发布时间】:2016-12-30 13:41:36
【问题描述】:

这里是新手:

以下使用“埃拉托色尼筛算法”生成所有小于 100 的素数的程序运行良好,但在显示 CORRECT 输出后崩溃!

windows 中的错误:primenumber.exe 已停止工作!

#include<stdio.h>
int main()
{
  int P[100] = {0}, i, j;

  for(i = 2; i < 100; ++i)
  {
    if(P[i] == 0)
      printf("%d\n", i);

    for(j = 1; i * j <= 100; ++j)
      P[i * j] = 1;
  }

  return 0;
}

【问题讨论】:

    标签: c primes sieve-of-eratosthenes


    【解决方案1】:

    i*j&lt;=100 数组索引超出范围 -- UB...(Undefined Behavior)

    应该是i*j&lt;100

    【讨论】:

      【解决方案2】:

      这里发生数组溢出

       i*j<=100 should be i*j<100
      

      因为你的数组范围是 0-99

      【讨论】:

        猜你喜欢
        • 2016-07-07
        • 2021-07-26
        • 1970-01-01
        • 2018-07-08
        • 2021-05-16
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2015-04-09
        相关资源
        最近更新 更多