C/C++の宿題を片付けます 96代目
■ このスレッドは過去ログ倉庫に格納されています
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0002デフォルトの名無しさん
2007/09/21(金) 09:06:170003 ◆YpQ/fINFLk
2007/09/21(金) 17:43:40[2] 問題文(含コード&リンク):
エラトステネスの篩の公式を用い、自然数nまでの素数を全て表示するさいに、1〜nまでに求めた素数を格納しておき、それを用いて素数か否かを判別せよ。
(20を素数か判別するときは、それまでに格納した2,3,5,7,11,13,17,19の√20以下の2,3で割る)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 9月25日まで
[5] その他の制限:素数に対する、習っていない特殊なincludeや関数は仕様しない
口頭で出された課題なので、問題文等分かりにくかったらすいません。
0004デフォルトの名無しさん
2007/09/21(金) 18:10:51�@エラトステネスのふるいを使って、nまでのすべての素数を表示する
�Anが素数かどうか判定する(ただしその際、�@で求めた素数リストを利用する)
ということか??
0005 ◆YpQ/fINFLk
2007/09/21(金) 19:15:36�@の表示するときの段階にも�Aを行うみたいな感じです。
素数リストを作る。
そのさい、次の数を判定するのに今まで求めた素数を使用する。
仮にnが100のときは
10の時点の判別には、今まで求めた(格納した) 2〜√10までの素数を用い、
100の時は、2〜√100までの素数を用いるということです。
まだ少し分かり辛いですが、よろしくお願いします。
0006デフォルトの名無しさん
2007/09/21(金) 19:41:39何を習っていて何を習っていないのかがわからん
0007 ◆YpQ/fINFLk
2007/09/21(金) 20:10:43includeに関しては、
#include <stdio.h>
#include <math.h>
使用するものは、この二つのみだと思います。
授業範囲は、配列程度までなのでデータを配列に格納しつつfor文やIf文で使って作れという課題だと思います。
0008デフォルトの名無しさん
2007/09/21(金) 20:19:04>>5 の例だと、n = 100 は 2 が素数だと分かった瞬間に
ふるい落とされるから、>>5 みたいな動作はしないよ?
そういう素数を逐次格納して試し割るアルゴリズムは
ふるい型のアルゴリズムとは呼ばない。
0009 ◆YpQ/fINFLk
2007/09/21(金) 20:41:03勉強不足、申し訳ありませんorz
素数関係もプログラムも初心者なもので、1〜√nがどうとか聞いてるうちに、勘違いしていたようです。
・「素数を逐次格納して試し割るアルゴリズム」
これが課題で、間違いないと思います。
分かりやすい説明ありがとうございます。
0010デフォルトの名無しさん
2007/09/21(金) 20:48:52#define n 100
int main() {
int primes[n+1], pnum = 0;
int i, x;
for (x = 2; x <= n; ++x) {
for (i = 0; i < pnum; ++i) {
if (x % primes[i] == 0) break;
}
if (i == pnum) primes[pnum++] = x;
}
for (i = 0; i < pnum; ++i) {
printf("%d\n", primes[i]);
}
}
■ このスレッドは過去ログ倉庫に格納されています