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言語 exitの使い方
-
C言語 列挙型(enum型)変数について
-
列数の多いエクセルのデータを...
-
VBAのWorksheetFunctionの引数...
-
EXCEL/VBA 変数の値をクリップ...
-
VBAで72時間タイマーがオーバー...
-
整数xxxが大き過ぎますというエ...
-
プログラミングで変数と関数の...
-
C言語 初心者です。
-
Accessで文字列のバイト数読み込み
-
VB 配列の内容をファイルに書...
-
エラーの意味は? Lvalue req...
-
数値を浮動小数点32bitHEXコー...
-
VisualStudio2022でC言語プログ...
-
数字の位ごとの値を表示するプ...
-
配列の値を置換するにはどうす...
-
定数の設定について。
-
世界のナベアツ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについての質問...
-
平均、最大値、最小値を表示す...
-
C言語初心者です。次の問題で質...
-
c言語 プログラミング 等比数列...
-
プレゼント交換プログラム
-
Cプログラムについて
-
if文を条件演算子に書き換えに...
-
エクセルのマクロでの積分
-
C言語の問題 1 つの文字をキー...
-
c言語でランタイムエラーの処理...
-
C言語 累乗の計算
-
任意の数から人の数までの素数...
-
c言語の文字列について質問です...
-
C言語 exitの使い方
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
おすすめ情報