for文の部分がうまく機能しません。分かる方お手すきでお願いします。
for(i=1;i<=number;i++){ /*number:入力した値*/
surplus=number%i; /*surlus:余り*/
if(surplus==0)
divisible_counter++;/*割切れた数の個数*/
}
if(divisible_counter>=3||divisible_counter==1)
printf("%d is not prime number\n",number);
else if(divisible_counter==2)
printf("%d is prime number\n",number);
}
return 0;
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
divisible_counterの初期化は処理系によるけど、所期するのがプログラマーとしての基本スキル
で、ここからは、プログラムのテクニック的なおせっかいだけど、このプログラムって、numberとして0とか負の数が来たら誤動作するよね
ですから、まず、Numberが負、0、1、正で場合分けする必要がある。
また、上記のように場合分けしてある場合、ループの範囲は2からnumber/2-1。
更に、1回でも割り切れれば素数じゃないこと確定なので、ループは停止していいです。
最初に一度2でわれば偶数確定なので、ループの範囲を3からnumber/3-1にできて、ステップ間隔も2に出来てループの指すとが大幅に下がります。
No.3
- 回答日時:
テストしてみましたが、合っているようですが?
1 is not prime number
2 is prime number
3 is prime number
4 is not prime number
5 is prime number
6 is not prime number
7 is prime number
8 is not prime number
9 is not prime number
10 is not prime number
11 is prime number
12 is not prime number
13 is prime number
14 is not prime number
15 is not prime number
16 is not prime number
17 is prime number
18 is not prime number
19 is prime number
20 is not prime number
21 is not prime number
22 is not prime number
23 is prime number
24 is not prime number
25 is not prime number
26 is not prime number
27 is not prime number
28 is not prime number
29 is prime number
No.2
- 回答日時:
失礼しました。
約数の数を数えて判定する方法だったのですね。それなら、i=1でかまいません。
// 素数判定だけなら無駄のある方法ですが。
○ 「全角空白」が入っていたり、 } が全角だったりします
○ { } の対応がとれていません
○ divisible_counter を初期化している部分がありません。
これらは、ここに「書き込んだ」ときの問題なのでしょうか?
それとも、元のソースコードでそうなっているのでしょうか?
あと
> for文の部分がうまく機能しません。
質問するときは、どう「うまく機能しない」か書くようにしましょう。
エラーでコンパイルできないのか、○○と期待したのに××となった、とか。
そういう現象から、何が間違えているのかを予想するのが、プログラム修正の最初の一歩です。
No.1
- 回答日時:
> for(i=1;i<=number;i++){ /*number:入力した値*/
このforで、 i は 1, 2, ... number と変化します。
では、
> surplus=number%i; /*surlus:余り*/
i = 1 のときの「余り」っていくつになるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- UNIX・Linux Linuxのメッセージを出力して処理を終了する方法 1 2022/11/19 20:31
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- TOEFL・TOEIC・英語検定 中学2年生です。 英検2級でこのライティングで何点くらい取れるでしょうか。(16満点) Some p 4 2022/04/01 17:38
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについての質問...
-
平均、最大値、最小値を表示す...
-
c言語 プログラミング 等比数列...
-
c言語の文字列について質問です...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
エクセルへのデータの貼付時に...
-
フォームを開くときに、コンボ...
-
C言語 列挙型(enum型)変数について
-
Variant型で宣言してるのにEmpt...
-
Excel-vba 文字列と変数を...
-
C#で動的にコントロールを取得...
-
ラジオボタンの値の取得につい...
-
テキストボックスの値を変数に...
-
EXCEL/VBA 変数の値をクリップ...
-
相関係数p値の出し方
-
java final
-
VisualStudio2022でC言語プログ...
-
初心者プログラミング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについての質問...
-
平均、最大値、最小値を表示す...
-
c言語 プログラミング 等比数列...
-
C言語の問題 1 つの文字をキー...
-
素数を判定するプログラム
-
素数を判定するプログラム
-
if文を条件演算子に書き換えに...
-
C言語初心者です。次の問題で質...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
エラーの意味は? Lvalue req...
-
Excel-vba 文字列と変数を...
-
excelの、ある数式内の{}の意...
-
VisualStudio2022でC言語プログ...
-
数字の位ごとの値を表示するプ...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
配列の値を置換するにはどうす...
-
整数xxxが大き過ぎますというエ...
おすすめ情報