我讀了關於Eratosthenes算法的Sieve,並試圖實現它,代碼編譯時沒有任何錯誤,但我得到了空白輸出。 下面是代碼: -SPOJ PRIME1:RTE;有沒有一種方法來避免動態數組?
#include <stdio.h>
#include <stdlib.h>
#define limit 100000
int main()
{
int prime[limit];
int i,j,t;
int n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
for(i=0;i<=n;i++)
{
prime[i]=1;
}
prime[0]=0;
prime[1]=0;
for(i=2;i<=n;i++)
{
if(prime[i]==1)
{ for(j=2;i*j<=n;j++)
prime[i*j]=0;
}
}
for(i=m;i<=n;i++)
{
if(prime[i]!=0)
printf("%d\n",i);
}
}
return 0;
}
是的,但我只是測試我的實現與默認編號。說100,後來我會增加陣列的大小,但即使是100也有一個空白輸出 –
@AniketSanadhya 100產生未定義的行爲。請嘗試修復。 – dasblinkenlight
它不應該給出空白輸出。應該給出'1'的列表。除非i * j == 100的素數[i * j] = 0會覆蓋n。 – marom