質問: 双子の素数 3~1000の範囲で双子の素数をすべて求めるプログラムの作り方を教えて下さい。友人には「『エラトステネスのふるい』を使え」と言われたのですが、「エラトステネスのふるい」とは一体何なのでしょうか?それも教えて頂きたいです。
回答: 色々間違ってました。正しくは、 int main(void){ int i,j; int isprime[1000]; //最初はすべての数が素数だと思う for(i=0;i<=1000;i++){ isprime[i]=1; } //誤動作しないようにする。 isprime[0]=isprime[1]=0; //2からはじめる for(i=2;i<=1000;i++){ if(isprime[i]==1){ for(j=2*i;j<=1000;j+=i){ isprime[j]=0; } } } //双子素数をプリントする for(i=2;i<=1000;i++){ if(isprime[i-2]==1 && isprime[i]==1){ print("(%d,%d)",i-2,i); } } } で、結果は、 (3,5)(5,7)(11,13)(17,19)(29,31)(41,43)(59,61)(71,73)(101,103)(107,109)(137,139)(149,151)(179,181)(191,193)(197,199)(227,229)(239,241)(269,271)(281,283)(311,313) (347,349)(419,421)(431,433)(461,463)(521,523)(569,571)(599,601)(617,619)(641,643)(659,661)(809,811)(821,823)(827,829)(857,859)(881,883) でした。