
2以上120以下の素数を全て求めて表示するプログラムを書きなさい。
素数か否かの判定には以下のアルゴリズム[処理手順]
(2 <= n <= 120のときのみ有効)を用いなさい。
i) nが2, 3, 5, 7, 11のうちのどれかと等しければNは素数
ii) nが2, 3, 5, 7, 11の全てに対して割切れなければNは素数
iii) それ以外(iもiiも不成立)のとき、Nは素数ではない。
*) 2, 3, 5, 7, 11は最初に出力してしまい、
n=12から120までをfor文のなかで判定すればよい。
というC言語の課題です。
自分でプログラムを作ったのですが、うまくできません・・。
if文が働いてないようなのですが、どこが間違っているのでしょうか?
#include <stdio.h>
int main(void)
{
int i;
printf("2\n");
printf("3\n");
printf("5\n");
printf("7\n");
printf("11\n");
for (i=12;i<=120;i++){
if (i%2!=0 || i%3!=0 || i%5!=0 || i%7!=0 || i%11!=0){
printf("%d\n",i);
}
else{
printf("");
}
}
printf( "\n" );
return 0;
}
No.1ベストアンサー
- 回答日時:
ii) nが2, 3, 5, 7, 11の『全て』に対して割切れなければNは素数
ですから ifの条件設定がおかしいですよ
たとえば 12の場合
( 12 % 2 ) != 0 ... FALSE
( 12 % 3 ) != 0 ... FALSE
( 12 % 5 ) != 0 ... TRUE
( 12 % 7 ) != 0 ... TRUE
( 12 % 11 ) != 0 ... TRUE
ということは 12は 2と3の倍数ということになります
したがって『素数ではない』と判断出来ます
||演算子でこの判断が可能なのでしょうか
蛇足
12は 2と3の倍数である事は明らかなので 13から検査すればいい
ループカウントアップを1にするより 2としてやれば偶数のチェックはしなくて済む
ループの終了条件も n<=120 120は当然偶数なので2の倍数であるから
『<=』の『=』は不要かも
No.3
- 回答日時:
(へ) 理屈的には「偶数は iii) に落ちるので最初から無視した」といえばいいと思います>#2.
もっといえば, 120以下の素数を見付けるなら 11 で割切れるかどうかの判定も不要だけど (課題としては) まずいんだろうなぁ.
11で割り切れる判定もいらないんですね・・
ただ手順通りにと指定されているので
今回はこのまま提出します。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cshの文字列操作(0埋め)
-
コンパイルエラーについて
-
Cプログラムについて
-
printfの出力内の文字をdefine...
-
エラーの意味が…
-
すごろくに使用するサイコロ
-
c言語で2000年以降カレンダーを...
-
C言語での数字の花形表示
-
defineで定数が置き換えられな...
-
scanfに文字が入力されたときに...
-
勝率をプログラムに
-
Visual Sutdio 2017 でのC言語...
-
【C言語教えてください】sin波...
-
C言語に関して質問です。 次の...
-
printfのコードは?
-
C言語プログラミングで「コマン...
-
数当てゲームを作っているのですが
-
C言語 ツェラーの公式を使った...
-
C言語で 小文字を大文字に変え...
-
どうすれば直りますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
10個出力で改行したいのですが...
-
テキストカーソル位置の取得
-
c言語でAからZまでを表示する...
-
strcmp
-
4の倍数を論理演算で表す。。
-
コマンドラインに出力した文字...
-
(C言語)めちゃくちゃな値にな...
-
コマンドプロンプトがすぐ消える
-
円の面積を求めるプログラミン...
-
【C言語教えてください】sin波...
-
C言語 プログラミング
-
入力したお金の金額からお札の...
-
unsigned int型について
-
c言語で2000年以降カレンダーを...
-
LU分解法のピボット選択機能実...
-
WM_CLOSEで閉じれないウィンド...
-
%P と %X の違い
-
switch分のケースを範囲数?に...
おすすめ情報