查找素数时的实现错误
Impelementation error in finding prime no
问题-生成质数。
使用的方法-不使用优化的 erathone 筛选。
问题代码仅生成 2 和 3。
#include<stdio.h>
int main()
{
int i,j;
int primes[100];
for(i=0;i<=20;i++)
{
primes[i]=1;
}
primes[0]=0;primes[1]=1;
for(i=2;i<=20;i++)
{
if(primes[i]==1)
{
for(j=2;i*j<=20;j++){
primes[i*j]=0;
}
}
}
for(i=2;primes[i]!=0&&i<=20;i++)
{
printf("%d\n",i);
}
return 0;
}
for(i=2;primes[i]!=0&&i<=20;i++){
printf("%d\n",i);
}
您的primes[i]!=0
条件将导致循环在遇到非素数即“4”时终止。尝试将其分离为自己的条件。
for(i=2;i<=20;i++){
if (primes[i] != 0){
printf("%d\n",i);
}
}
问题-生成质数。
使用的方法-不使用优化的 erathone 筛选。
问题代码仅生成 2 和 3。
#include<stdio.h>
int main()
{
int i,j;
int primes[100];
for(i=0;i<=20;i++)
{
primes[i]=1;
}
primes[0]=0;primes[1]=1;
for(i=2;i<=20;i++)
{
if(primes[i]==1)
{
for(j=2;i*j<=20;j++){
primes[i*j]=0;
}
}
}
for(i=2;primes[i]!=0&&i<=20;i++)
{
printf("%d\n",i);
}
return 0;
}
for(i=2;primes[i]!=0&&i<=20;i++){
printf("%d\n",i);
}
您的primes[i]!=0
条件将导致循环在遇到非素数即“4”时终止。尝试将其分离为自己的条件。
for(i=2;i<=20;i++){
if (primes[i] != 0){
printf("%d\n",i);
}
}