Eratosthenes 算法筛法 - 工作正常但在之后崩溃
Sieve of Eratosthenes algorithm - works fine but crashes after
这里是新手:
以下使用 "Sieve of Eratosthenes algorithm" 生成所有小于 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;
}
i*j<=100
数组索引越界 -- UB...(Undefined Behavior)
应该是i*j<100
.
此处发生数组溢出
i*j<=100 should be i*j<100
因为你的数组范围是 0-99
这里是新手:
以下使用 "Sieve of Eratosthenes algorithm" 生成所有小于 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;
}
i*j<=100
数组索引越界 -- UB...(Undefined Behavior)
应该是i*j<100
.
此处发生数组溢出
i*j<=100 should be i*j<100
因为你的数组范围是 0-99