
No.5ベストアンサー
- 回答日時:
色々間違ってました。
正しくは、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)
でした。
この回答へのお礼
お礼日時:2005/01/28 23:06
お礼がとても遅れてしまい、本当に申し訳ありません。
プログラムリストを載せて頂いた上訂正までして頂いて、本当にありがとうございました。
遅ればせながら、良回答にさせていただきます。
No.4
- 回答日時:
エラトステネスのふるいについては、
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);
}
}
}
で行くと思います。未チェックですが。
この回答へのお礼
お礼日時:2004/12/06 17:29
ありがとうございました!!!エラトステネスのふるいについてよく分かりました。本当に感謝しています。
わざわざプログラムリストまで載せて下さって、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
C言語での引数の省略方法
-
5
単語の出現回数を数え、出現回...
-
6
C言語のサイコロシミュレート
-
7
C言語 エラーの原因がわからな...
-
8
if と配列の組み合わせ
-
9
C言語で三目並べをするプログラ...
-
10
ラップ関数とはどんなものですか?
-
11
ファイルに含まれるアルファベ...
-
12
c言語の配列を使ってサイコロを...
-
13
PowerShellがうまくいかない
-
14
(マルチスレッド)_beginthrea...
-
15
毎回違う乱数を生成するにはど...
-
16
system関数がうまくいかない
-
17
比較回数と交換回数表示について
-
18
c++でサインカーブ、コサインカ...
-
19
std::set<int> で、ある値が何...
-
20
市松模様
おすすめ情報
公式facebook
公式twitter