【发布时间】:2014-10-11 05:26:59
【问题描述】:
几天前我开始学习 C。我在使用 Erathosthemes 的筛子找到素数时遇到了这个问题。代码编译但没有给出正确的输出。
#include<stdio.h>
#include<math.h>
#define size 100
int main()
{
int n;
printf("Enter the value of n\n");
scanf_s("%d",&n);
int A[size],i;
for(i=0;i<n+1;i++)
{
A[i]=i;
}
A[1]=0;
for(i=0;i<sqrt((float)n);i++)
{
for(int j=0;j<n+1;j++)
{
if(A[j]%i==0)A[j]=0;
else A[j]=j;
}
}`
for(i=0;i<n+1;i++)
{
if(A[i]!=0)printf("%d\n",A[i]);
}
}
【问题讨论】:
-
使用调试器。你的
if(A[j]%i==0)显然是错的,i以0开头。 -
这不是 SoE。请通过[1]和[2]。 [1]en.wikipedia.org/wiki/Sieve_of_Eratosthenes#Implementation [2]rosettacode.org/wiki/Sieve_of_Eratosthenes#C