ページ 11

素数を求めるプログラミング

Posted: 2006年6月26日(月) 19:13
by やまと
コマンドライン引数として10,000以下の自然数 n を指定し,n以下の素数の和を表示するプログラムを書け.もちろん出力されるべき値のテーブルをソースコードに書き込んではならない

という問題を教えていただけませんか?
(C言語です。始めは、#include<stdio.h>から始まります)

Posted: 2006年6月26日(月) 19:21
by C1000
ここはActiveBasicの質問版です。CのことはCの掲示板へお願いします。

Posted: 2006年6月26日(月) 20:08
by konisi
素数を列挙するプログラム
を移植・改造すればいいかと思います。

ただし、C言語にはString型は無かった筈なので、少し面倒になるかと思われます。

Posted: 2006年6月26日(月) 20:22
by C1000
もしくはKonisiさんの作ったアルゴリズムを参考にするのはどうでしょう。

Re: 素数を求めるプログラミング

Posted: 2006年6月26日(月) 22:14
by 卓漏
>10,000以下の自然数 n を指定し,n以下の素数の和を表示するプログラム
↑たとえば、nが20だったら、20までの素数
2,3,5,7,11,13,17,19
をすべて足して、77(かな?)を表示させればいいということでしょうか?

自己解釈で↓にサンプルを置いておきますが、手抜きです。動作の保障しません。

Posted: 2006年6月26日(月) 22:46
by イグトランス
卓漏さんのCのコードではforもそうですが,scanf/printfでlong型の変数に対して%dを使っているのが惜しいですね。%ldです。

それにしても,ActiveBasicの掲示板でCのことを訊くとはよほど焦っているのでしょうか。
もっとほかに適切な場所もあったでしょうに。
とは言え,私も頻繁にCやC++のことを引き合いに出すので,あまり堂々と言えるものではありませんが。

Posted: 2006年6月27日(火) 11:00
by konisi
>>卓漏
コマンドライン引数を使うのですから、scanfで設定するのではなくargv[1]を調べて設定するほうが適切なのではないかなと。

Posted: 2008年4月12日(土) 18:40
by tks
Active Basicで作った、13以上の素数を求めるプログラム

コード: 全て選択

動作保障済み
#prompt
2 Dim A As Long'素数の入力用
3 Dim B As Long'素数の計算用
4 Dim C As Long'素数の計算用
5 Dim D As Long'素数の計算用
6 Dim E As Long'素数
7 C=0:D=0:E=0
8 INPUT "13以上の数字を入力して下さい";A
9 FOR B=1 TO 13 STEP 1
10 IF A>=13 THEN 12 Else 8
11 NEXT
12 FOR C=1 TO A STEP 1
13 LET  D=C MOD 2
14 IF D=1 THEN E=E+1
15 NEXT 
16 E=E-1
17 PRINT "素数の数";E’素数の表示
18 GOTO 7 
END

Posted: 2008年4月12日(土) 19:10
by konisi
>>tks
9行目と11行目の存在価値が不明です。
13行目では、数の奇数性しか判定していないように見えます。
100までに素数は25個のみの筈なのに、49と表示されます。

そして今日は4月1日ではありません。

Posted: 2008年4月12日(土) 23:25
by ゲスト
何かの課題なのでしょうか?
「素数」
コマンドライン引数として10,000以下の自然数 n を指定し,n以下の素数の和を表示するプログラムを書け.もちろん出力されるべき値のテーブルをソースコードに書き込んではならない
実行例
$ ./main 2
2
$ ./main 3
5
$ ./main 4
5
$ ./main 5
10
$ ./main 6
10
$ ./main 7
17


--------------------------------------------------------------------------------

状況説明
Tokugawaさんが持っているカードには1000以下の自然数が一つ書かれている.
Tokugawaさんはそのカードを見せてはくれないが,Kawaguchi君が
カードに書かれている数字は300ですか?
という形式の質問をすると,Tokugawaさんは以下のように正直に答えてくれる.
書かれている数字は300よりも大きい.
その通りです.
書かれている数字は300よりも小さい.
何回質問しても正直に答えてくれる.

Kawaguchi君はどのように質問すればカードに書かれている数字を素早く知ることができるだろうか?
Kawaguchi君はカードに書かれている数字を知るために何回ぐらい質問する必要があるだろうか?
このことを経験的に確かめたい.

Posted: 2008年4月12日(土) 23:50
by ゲスト
10000までの素数を列記し、バイナリ検索で目的の数値にたどり着くまでの回数を求めよ?Cで?

素数の和

Posted: 2008年7月20日(日) 14:10
by 三毛CAT
最初の書き込みのような動作をするものをActive Basicで作ってみました。 10000までの所要時間:9820651ミリ秒(1回実測・目安として)

Posted: 2008年7月20日(日) 18:46
by konisi
暇が出来たのでもう少し速い奴を作ってみました。
こちらの環境で、20~32msで10000までの総和を求められます。

素数の和(C)

Posted: 2008年8月03日(日) 15:38
by 三毛CAT
前のと同じ感じ(位置の表示はなし)のC版です。 10000でかかった時間は5.63秒(1回実測)