![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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ランキング
-
C言語 プログラミング
-
strcmp
-
ヌメロンの対戦相手
-
c言語でAからZまでを表示する...
-
printfのコードは?
-
printf で二進表示を行いたい。
-
CPU温度・負荷等を調べるには
-
fscanf()【C言語】
-
c言語プログラミングでアルファ...
-
cshの文字列操作(0埋め)
-
WM_CLOSEで閉じれないウィンド...
-
プログラム(C言語)
-
改行について 1行に何個かづ...
-
C言語でマウス入力(クリックや...
-
プログラミング言語C
-
摂氏の値を計算するプログラム...
-
printf( " %2d", p * q );
-
srand(time(NULL))の使い方
-
独学で最近c言語を始めたもので...
-
C言語で 小文字を大文字に変え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
【C言語教えてください】sin波...
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
strcmp
-
4の倍数を論理演算で表す。。
-
C言語での、年複利の計算方法...
-
C言語 プログラミング
-
scanfに文字が入力されたときに...
-
hit&bolwのプログラミングがで...
-
%P と %X の違い
-
unsigned int型について
-
printf( " %2d", p * q );
-
cshの文字列操作(0埋め)
-
改行について 1行に何個かづ...
-
8人分のテストの点数を入力し、...
-
入力したお金の金額からお札の...
-
三角形の判別
-
テキストカーソル位置の取得
おすすめ情報