お題:
その数が素数がどうか判別するプログラム
①はじめに10桁以下の整数を入力させる
②それが素数かどうか判別する。
プログラム実行例
10桁以下の整数を入力してください。 a:3257 これ素数 |
必須事項
・do文を使うこと
do文とは
do文は、
do {} while ();
と記述され、{}ブロック内の命令をwhile()内の式が成り立つまで繰り返し実行します。例えば、
do {
puts("気合いを入れろ!");
scanf("%d", &a);
} while ( a == 777777777);
のようにプログラムします。このプログラムでは、気合いでa=777777777を当てない限り、プログラムは終わりません。
これを利用して素数判別プログラムを作ってください。
解答は7月19日の夜に掲載します。それまでに各自プログラムを作成し、
・プログラム文
・その実行ファイル
をメールにがっちり張り付けて以下のアドレスに送ってください。
解答、質問はこちらまで。
cosmo-cleaner@za.pial.jp
---------------------------------------------------------------
解答
解答例は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main () { do { |
実行例は以下の通りです。
10桁以下の整数を入力してください。 |
解説
素数は1か、その数でないと割れない数なので、do文でひたすら割り続けるプログラムを作りました。
赤い部分はそのdo文です。bの初期値は1なので、b=2からスタートします。while()の条件を満たすとdo文を抜ける事ができます。つまり、2から順々にaを割って行って、aがbで割り切れた時点でdoを抜けます。
ここで、bには、とにもかくにもaを割ることの出来る数字が入っています。
青い部分では、bがaそのものなのか、aより小さい数なのかを判別します。もし、bがaと一致、つまりaが1とaでしか割れないとすれば、aは素数ということになります。
一方bがaより小さければ、aはbの倍数ということなので、素数ではありません。
ある数を解析する際、単純な作業を人海戦術できるのがコンピュータの利点と言えます。
今回解答が一番早かったのはKばやし君です。
答えられる範囲で質問いつでも受け付けます。
cosmo-cleaner@za.pial.jp
0 件のコメント:
コメントを投稿