![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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言語の問題 1 つの文字をキー...
-
平均、最大値、最小値を表示す...
-
エクセルのマクロでの積分
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VBAでダブルコーテーション入り...
-
C++における関数の引数について...
-
[return]の役割について
-
Excel-vba 文字列と変数を...
-
1つ前の値を変数に保存する方法
-
Variant型で宣言してるのにEmpt...
-
excelの、ある数式内の{}の意...
-
VBAの定数の使い方で、計算値を...
-
Windows Media Playerで動画を...
-
EXCEL/VBA 変数の値をクリップ...
-
vbsでテキストファイル内の文字...
-
C言語で全角文字を扱いたいので...
-
コンボボックスの名前を変数に...
-
C#の問題で2つの整数a,bの...
-
processing エラーで、 "cannot...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについての質問...
-
平均、最大値、最小値を表示す...
-
C言語初心者です。次の問題で質...
-
c言語 プログラミング 等比数列...
-
プレゼント交換プログラム
-
Cプログラムについて
-
if文を条件演算子に書き換えに...
-
C言語の問題 1 つの文字をキー...
-
エクセルのマクロでの積分
-
c言語でランタイムエラーの処理...
-
C言語 累乗の計算
-
任意の数から人の数までの素数...
-
c言語の文字列について質問です...
-
C言語 exitの使い方
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
おすすめ情報