「整数を素数の和で表す」の編集履歴(バックアップ)一覧はこちら
「整数を素数の和で表す」(2005/11/07 (月) 05:49:08) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<dl>
<dt>56 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 04:07:33</dt>
<dd>[1] 授業単元: プログラミング<br>
[2] 問題文:
4以上500以下の整数で、その整数が2つの素数の和に分解できる整数を<br>
全て表示するプログラムを作成せよ。その際、分解した場合の2つの素数<br>
も表示すること。また複数の分解を持つ場合、2つの素数の差が最も小さい<br>
ものを表示すること。例えば10という整数を考えた場合<br>
10=3+7 , 10=5+5の2通りの分解があるが<br>
2つの素数の差が小さいのは10=5+5の方なので<br>
この場合は10=5+5と表示する。<br>
[3] 環境<br>
[3.1] OS: WinXP<br>
[3.2] コンパイラ名とバージョン: lsic86NT.exe<br>
[3.3] 言語: C<br>
[4] 期限: 2005年11月2日まで<br>
[5] その他の制限: for文まで学習<br>
<br>
よろしくおねがいします。<br>
<br></dd>
<dt>57 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 05:08:11</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/56" target=
"_blank">>>56</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1024.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1024.txt</a><br>
<br>
適当に作ってみました。ポインタの使用がまずいのであれば、<br>
これらをすべて配列表現に直す必要があります。と言っても、<br>
bsearch()の部分を線形探索に直すなどすればいいだけです。<br>
<br></dd>
<dt>58 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 05:40:31</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/57" target=
"_blank">>>57</a><br>
早朝からご苦労様です。ありがとうございます。<br>
ポインタについてですがまだ習っていないのです。<br>
C言語の授業2回目で出された課題で、1回目はコマンドプロンプトの起動方法<br>
およびコンパイルの仕方等を学習しました。<br>
配列表現や線形探索等初めて聞く用語で私には正直さっぱり……です。<br>
授業2回目でハードルが急に上がったと思ってるのは私だけなのかな<br>
これが普通なのでしたらごめんなさい。<br>
<br>
<br></dd>
<dt>59 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 06:17:38</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/58" target=
"_blank">>>58</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1026.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1026.txt</a><br>
57とは別人だが書いてみた。<br>
素数を配列で与えるのがダメなら言ってくれ。<br>
<br></dd>
<dt>60 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 06:27:25</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/59" target=
"_blank">>>59</a><br>
ありがとうです。<br>
問題文が言葉足らずでしたね、ごめんなさい<br>
素数もプログラムによって求めないとだめと言われました。<br>
<br></dd>
<dt>61 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 06:43:23</dt>
<dd>#include <stdio.h><br>
#include <math.h><br>
#define NMAX 501<br>
void make_primelist(int*);<br>
int main(void){<br>
int prime[NMAX];<br>
int i,n,x,y,fFind;<br>
make_primelist(prime);<br>
for(n=4 ; n<NMAX ;n++){<br>
fFind=0;<br>
//差が小さいのは真ん中付近なのでそこから調べる<br>
for(x=n/2; x<n ; x++){<br>
if(prime[x]){<br>
y=n-x;<br>
if(prime[y])<br>
fFind=1;<br>
break;<br>
}}<br>
if(fFind) printf("%d,%d,%d\n",n,x,y);<br>
}<br>
return 0;<br>
}<br>
<br></dd>
<dt>62 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 06:44:09</dt>
<dd>//素数なら1違うなら0<br>
void make_primelist(int* prime)<br>
{<br>
int i,j,t;<br>
//初期化<br>
for(i=0; i<NMAX ;i++) prime[i] = 1;<br>
t = (int)sqrt(NMAX) + 1;<br>
//エラストテネスのふるい<br>
for(i=2; i<t ;i++){<br>
//もしチェック済みなら次<br>
if(prime[i]==0) continue;<br>
for(j=2; i*j<NMAX ;j++){<br>
prime[i*j]=0;<br>
}<br>
}<br>
prime[0]=0;prime[1]=0;<br>
return;<br>
}<br>
<br>
<br></dd>
<dt>63 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 06:44:53</dt>
<dd>int tbl[500], prime[500];<br>
int i, j, n;<br>
for (i = 0; i < 500; ++i)<br>
tbl[i] = 1;<br>
for (i = 2; i < 500; ++i) {<br>
if (!tbl[i]) continue;<br>
for (j = i*i; j < 500; j += i)<br>
tbl[j] = 0;<br>
}<br>
for (i = 2, n = 0; i < 500; ++i)<br>
if (tbl[i]) prime[n++] = i;<br>
}<br>
<br></dd>
<dt>64 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 06:46:11</dt>
<dd>ケコーン<br>
<br></dd>
<dt>65 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/10/29(土) 06:48:27</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/61-62" target=
"_blank">>>61-62</a><br>
わかりやすくつくってみたよ^^;<br>
<br></dd>
<dt>66 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 07:12:25</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/58" target=
"_blank">>>58</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1027.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1027.txt</a><br>
なんか早起きしたら初めてこのスレ見たので作ってみました<br>
配列も習ってないっぽいので問題をそのままプログラムにしたけど、<br>
2回目の授業でこれできたらこれから大変な気がする。<br>
<br>
もっと効率上げられるけど、余計なことはしてません。<br>
<br></dd>
<dt>67 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/10/29(土) 07:16:05</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/66" target=
"_blank">>>66</a> 7=3+4 ?<br>
<br></dd>
<dt>68 :<a href="mailto:sage"><b>66</b></a>:2005/10/29(土) 07:20:05</dt>
<dd>あう。上(a)直して下(b)直してなかった...<br>
// bは素数か調べる。調べ方はaと一緒<br>
flag = 0;<br>
for(i=2;i<= b/2;i++){<br>
for文の判定に=入れてください</dd>
</dl>
<dl>
<dt>56 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
04:07:33</dt>
<dd>[1] 授業単元: プログラミング<br>
[2]
問題文:4以上500以下の整数で、その整数が2つの素数の和に分解できる整数を<br>
全て表示するプログラムを作成せよ。その際、分解した場合の2つの素数<br>
も表示すること。また複数の分解を持つ場合、2つの素数の差が最も小さい<br>
ものを表示すること。例えば10という整数を考えた場合<br>
10=3+7 , 10=5+5の2通りの分解があるが<br>
2つの素数の差が小さいのは10=5+5の方なので<br>
この場合は10=5+5と表示する。<br>
[3] 環境<br>
[3.1] OS: WinXP<br>
[3.2] コンパイラ名とバージョン: lsic86NT.exe<br>
[3.3] 言語: C<br>
[4] 期限: 2005年11月2日まで<br>
[5] その他の制限: for文まで学習<br>
<br>
よろしくおねがいします。<br>
<br></dd>
<dt>57 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
05:08:11</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/56" target=
"_blank">>>56</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1024.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1024.txt</a><br>
<br>
適当に作ってみました。ポインタの使用がまずいのであれば、<br>
これらをすべて配列表現に直す必要があります。と言っても、<br>
bsearch()の部分を線形探索に直すなどすればいいだけです。<br>
<br></dd>
<dt>58 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
05:40:31</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/57" target=
"_blank">>>57</a><br>
早朝からご苦労様です。ありがとうございます。<br>
ポインタについてですがまだ習っていないのです。<br>
C言語の授業2回目で出された課題で、1回目はコマンドプロンプトの起動方法<br>
およびコンパイルの仕方等を学習しました。<br>
配列表現や線形探索等初めて聞く用語で私には正直さっぱり……です。<br>
授業2回目でハードルが急に上がったと思ってるのは私だけなのかな<br>
これが普通なのでしたらごめんなさい。<br>
<br>
<br></dd>
<dt>59 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
06:17:38</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/58" target=
"_blank">>>58</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1026.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1026.txt</a><br>
57とは別人だが書いてみた。<br>
素数を配列で与えるのがダメなら言ってくれ。<br>
<br></dd>
<dt>60 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
06:27:25</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/59" target=
"_blank">>>59</a><br>
ありがとうです。<br>
問題文が言葉足らずでしたね、ごめんなさい<br>
素数もプログラムによって求めないとだめと言われました。<br>
<br></dd>
<dt>61 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
06:43:23</dt>
<dd>#include <stdio.h><br>
#include <math.h><br>
#define NMAX 501<br>
void make_primelist(int*);<br>
int main(void){<br>
int prime[NMAX];<br>
int i,n,x,y,fFind;<br>
make_primelist(prime);<br>
for(n=4 ; n<NMAX ;n++){<br>
fFind=0;<br>
//差が小さいのは真ん中付近なのでそこから調べる<br>
for(x=n/2; x<n ; x++){<br>
if(prime[x]){<br>
y=n-x;<br>
if(prime[y])<br>
fFind=1;<br>
break;<br>
}}<br>
if(fFind) printf("%d,%d,%d ",n,x,y);<br>
}<br>
return 0;<br>
}<br>
<br></dd>
<dt>62 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
06:44:09</dt>
<dd>//素数なら1違うなら0<br>
void make_primelist(int* prime)<br>
{<br>
int i,j,t;<br>
//初期化<br>
for(i=0; i<NMAX ;i++) prime[i] = 1;<br>
t = (int)sqrt(NMAX) + 1;<br>
//エラストテネスのふるい<br>
for(i=2; i<t ;i++){<br>
//もしチェック済みなら次<br>
if(prime[i]==0) continue;<br>
for(j=2; i*j<NMAX ;j++){<br>
prime[i*j]=0;<br>
}<br>
}<br>
prime[0]=0;prime[1]=0;<br>
return;<br>
}<br>
<br>
<br></dd>
<dt>63 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
06:44:53</dt>
<dd>int tbl[500], prime[500];<br>
int i, j, n;<br>
for (i = 0; i < 500; ++i)<br>
tbl[i] = 1;<br>
for (i = 2; i < 500; ++i) {<br>
if (!tbl[i]) continue;<br>
for (j = i*i; j < 500; j += i)<br>
tbl[j] = 0;<br>
}<br>
for (i = 2, n = 0; i < 500; ++i)<br>
if (tbl[i]) prime[n++] = i;<br>
}<br>
<br></dd>
<dt>64 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
06:46:11</dt>
<dd>ケコーン<br>
<br></dd>
<dt>65 :<font color=
"green"><b>デフォルトの名無しさん</b></font>:2005/10/29(土)
06:48:27</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/61-62" target=
"_blank">>>61-62</a><br>
わかりやすくつくってみたよ^^;<br>
<br></dd>
<dt>66 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
07:12:25</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/58" target=
"_blank">>>58</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1027.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1027.txt</a><br>
なんか早起きしたら初めてこのスレ見たので作ってみました<br>
配列も習ってないっぽいので問題をそのままプログラムにしたけど、<br>
2回目の授業でこれできたらこれから大変な気がする。<br>
<br>
もっと効率上げられるけど、余計なことはしてません。<br>
<br></dd>
<dt>67 :<a href=
"mailto:sage"><b>デフォルトの名無しさん</b></a>:2005/10/29(土)
07:16:05</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/66" target=
"_blank">>>66</a> 7=3+4 ?<br>
<br></dd>
<dt>68 :<a href="mailto:sage"><b>66</b></a>:2005/10/29(土) 07:20:05</dt>
<dd>あう。上(a)直して下(b)直してなかった...<br>
// bは素数か調べる。調べ方はaと一緒<br>
flag = 0;<br>
for(i=2;i<= b/2;i++){<br>
for文の判定に=入れてください</dd>
</dl>
<dl>
<dt>76 :<a href="mailto:sage"><b>59</b></a>:2005/10/29(土) 14:55:09</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/60" target=
"_blank">>>60</a><br>
<a href=
"http://ime.st/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1028.txt"
target=
"_blank">http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1028.txt</a><br>
必要ないかもしれないが一応書いてみた。<br>
<br></dd>
<dt>77 :<font color="green"><b>56</b></font>:2005/10/29(土) 16:54:24</dt>
<dd>みなさん本当にありがとうございます。<br>
とても分かりやすい解説まで付けてくれた方もいて<br>
本当に助かりました。何度も修正してくれたりご苦労様です。<br>
私の問題についてはこれで解決という形で終了させてください。<br>
最後に本当にありがとうです。</dd>
</dl>
表示オプション
横に並べて表示:
変化行の前後のみ表示: