[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
598(1): 名前は開発中のものです。 [sage] 2006/11/27(月) 20:55:38 ID:3EIwZmwn(1) AAS
>>597597(1): 名前は開発中のものです。 [sage] 2006/11/27(月) 13:00:13 ID:AfDweK2L(1) AAS
チラシの裏だが、素数の問題について一言。
”エラトステネスのふるい”というキーワードが出ているが、この問題に対して適応できるとは考えられない。
この方法を使うのならば、1000個目の数値が既知でなくてはならい。要するにズルをしないで解を得るには
総当りするか、無限個の要素からなる配列をふるいにかけるかである。
もしも”エラトステネスのふるい”を意識していたならば、例えば「0〜9999の間に存在する素数を列挙せよ」となる。
いいかい、n+1が素数かどうかを最も効率よく判定するためには、
n以下の素数が列挙されている必要がある。
これが「エラトステネスのふるい」から得られる知見なのだよ。
そうしてみると、1000個目の素数を探すプログラムには、
・ 次に判定する整数を示すカウンタ
・ 今までに見つかった素数を格納する配列
を確保する必要がある。
1000個目、という指定は、後者の確保する用量が静的に決まるため、
極めて具合が良いのだよ。
「エラトステネスのふるい」と言われて、
教科書どおりの手順しか思いつかない人間には、
残念ながら、創造の才能は無いよ。
与えられた道具は、使い方を工夫して、組み合わせるんだ。
600: 名前は開発中のものです。 [sage] 2006/11/28(火) 03:03:40 ID:JXILxC55(1) AAS
>>598
前言撤回です。自分のアホさを痛感しつつ課題に取り組みました。
外部リンク[phps]:gamdev.org
というか、>>382382(1): 名前は開発中のものです。 [sage] 04/07/21 12:16 ID:ddhH1W+g(1) AAS
#include <iostream.h>
int main(void){
int sosuu[1000];
// 配列の初期化
for(int i=0; i<sizeof(sosuu)/sizeof(int); i++) sosuu[i] = 0;
// ここから素数の計算
sosuu[0] = 2;
for(int i=3; i<=sizeof(sosuu); i+=2){
int j=0;
while(sosuu[j]){
if(!(i%sosuu[j])) break;
j++;
}
if(!sosuu[j]) sosuu[j]=i;
}
// 素数の出力
for(int i=0; sosuu[i]; i++) cout << sosuu[i] << " ";
return 0;
}
と同じですねHAHAHA.
orz
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s