#include<stdio.h>
#define N 1000
void main()
{
int x[N],i,j;
for(i=0;i<=999;i++)
x[i]=i+1;
x[0]=0;
for(j=1;j<=999;j++)
{
if(x[i]!=0)
{
for(i=j+1;i<=999;i++)
if(x[i]%x[j]==0)
x[i]=0;
}
}
for(i=0;i<=999;i++)
if(x[i]!=0)
printf("%d",x[i]);
}
輸入運行後顯示的
求原因
補充:用篩法求1~1000之間的素數。
第一個循環結束後i已經為1000了,而你在第二個中有寫到if(x[i]!=0),這時x[i]已經超出了數組的范圍。
那你編寫一個正確的
#include<stdio.h>
#define N 1000
void main()
{
int x[N],i,j;
for(i=0;i<=999;i++)
x[i]=i+1;
x[0]=0;
for(j=1;j<=999;j++)
{ i=j+1;
if(x[j]!=0)
for(;i<=999;i++)
if(x[i]%x[j]==0)
x[i]=0;
}
for(i=0;i<=999;i++)
if(x[i]!=0)
printf("%d\n",x[i]);
}