「教えて!ピックアップ」リリース!

3~1000の範囲で双子の素数をすべて求めるプログラムの作り方を教えて下さい。友人には「『エラトステネスのふるい』を使え」と言われたのですが、「エラトステネスのふるい」とは一体何なのでしょうか?それも教えて頂きたいです。

A 回答 (6件)

色々間違ってました。

正しくは、
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)
でした。
    • good
    • 0
この回答へのお礼

お礼がとても遅れてしまい、本当に申し訳ありません。
プログラムリストを載せて頂いた上訂正までして頂いて、本当にありがとうございました。
遅ればせながら、良回答にさせていただきます。

お礼日時:2005/01/28 23:06

No.5のプログラムですが、


int isprime[1000];
なので、forでiが1000までまわしちゃうとisprime[1000]にアクセスしてしまうのでまずいのでは?isprimeは[0]から[999]までしかないですよね。
int isprime[1001];
にしましょう。
    • good
    • 0
この回答へのお礼

お礼がとても遅れてしまい、本当に申し訳ありません。
良いアドバイスをありがとうございました。

お礼日時:2005/01/28 23:09

エラトステネスのふるいについては、


http://www.hokuriku.ne.jp/fukiyo/math-obe/eratos …
に書いてあります。プログラムでかくなら、1000個の配列を作って、
#include <stdio.h>

int main(void){

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=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);
}
}

}
で行くと思います。未チェックですが。
    • good
    • 0
この回答へのお礼

ありがとうございました!!!エラトステネスのふるいについてよく分かりました。本当に感謝しています。
わざわざプログラムリストまで載せて下さって、本当にありがとうございました。

お礼日時:2004/12/06 17:29

双子の素数は、3と5、41と43みたいに差が2の組(奇数だけ考えたら隣あってる組)ですね。

普通に「エラトステネスのふるい」で素数を求めてから双子チェックしたらいいのでは。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2004/12/06 17:26

双子の素数ってナンですか?


17、71
見たいなものを言うのでしょうか?

この回答への補足

No.3の方が回答して下さった通り、ある自然数pとp+2がともに素数であるもののことです。

補足日時:2004/12/06 17:23
    • good
    • 0
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。
素数を見つける方法の一つだったんですね。
ありがとうございました。

お礼日時:2004/11/14 23:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング