![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
練習問題 5-15
2以上の数値を入力し、素因数分解した結果を表示しなさい。
疑問ですが、素因数分解なので割る数字は、2.3.5.7.・・・の自分の数字しか割りきれない数字で
割ります。それでは、以下のプログラムはどこでそれを判断しているのでしょか?
4で割ろうとしないのは、どこのプログラムが司っているのでしょうか
もし!見えない取り組みがあれば宜しくお願いします。
以下プログラムです。
1) int n, x;
2) scanf("%d", &n );
3) for( x = 2 ; n > 1 ; x++ ){
4) while( ( n % x ) == 0 ){
5) printf( "%d ", x );
6) n /= x;
}
}
No.3ベストアンサー
- 回答日時:
の理解がまだ不十分なようです。
途中過程をメッセージ出力した次のコードを試してみてください。
int n, x;
scanf("%d", &n);
for (x = 2; n > 1; x++) {
while (1) {
printf("%dを%dで割ってみる...\n", n, x);
if (n % x == 0) {
printf("\t割り切れた\n");
n /= x;
} else {
printf("\t割り切れない\n");
break;
}
}
}
この回答への補足
jjon-com様 御回答誠にありがとうございます。
私のC言語環境は OS:Win7、MinGwとMSYSです。
コンパイルできるように御紹介のプログラムを
最初と最後を追加して試しました。
残念ながら文字化けが生じてしまいましたが、化けた部分をエディタに貼り付けたら
ちゃんと立派な文字があらわれて助かりました。
#include<stdio.h>
int main()
{
int n, x;
scanf("%d", &n);
for (x = 2; n > 1; x++) {
while (1) {
printf("%dを%dで割ってみる...\n", n, x);
if (n % x == 0) {
printf("\t割り切れた\n");
n /= x;
} else {
printf("\t割り切れない\n");
break;
}
}
}
return 0;
}
$ d
100
100を2で割ってみる...
割り切れた
50を2で割ってみる...
割り切れた
25を2で割ってみる...
割り切れない
25を3で割ってみる...
割り切れない
25を4で割ってみる...
割り切れない
25を5で割ってみる...
割り切れた
5を5で割ってみる...
割り切れた
1を5で割ってみる...
割り切れない
以上です^^
せっかくですので、横やりの質問ですが、「100」と入力した結果ですが、
文字化けしてしまい、私の変えたプログラムで何か不適切な部分がありますか?
宜しくお願いします。
ご回答ありがとうございました。
例題まで作成していただきとてもありがたことです。
流れ的なプログラムは理解できました。ループ処理されるので、最終的には自分の数字でしか割り切れないところまでプログラムが働く・・・
まだ私は完璧に理解することはできませんが、プログラムの流れは分かりました。本題で elseを使用したら、とても分かり安と思いましたが、あえて使わないことで処理能力の向上につながり、プログラムを組む上では必要なことだと思います。まだまだ練習問題が山ほどあり、素人の素朴な疑問で、ばかげた質問をすると思いますが
お許しください。
No.4
- 回答日時:
> 私の変えたプログラムで何か不適切な部分がありますか?
いいえ,その実行結果が私の意図していたそのものです。
> 4で割ろうとしないのは、どこのプログラムが司っているのでしょうか
というご質問に対するお二人の回答者からの回答,
> x=4(=2*2)にいくまでに、
> 4で割れる条件が処理されています(2で割る処理を行っています)
> (4で)割ろうとしてるけど、空振りしているだけです。
という事実がその実行結果の中に現れていることがお分かりになりますか?
No.2
- 回答日時:
n=20を考えると(20=5*4)
以下のように動きます
1.3)でX=2
2.4)でn%x は20%2で割り切れる5)以下の処理
3.5)で2を表示
4.6)n=n/x つまり n=20/2=10
5.4)でn%x は10%2で割り切れる5)以下の処理
6.5)で2を表示
7.6)n=n/x つまり n=10/2=5
8.4)でn%x は5%2で割り切れないので3)へいく
9.3)でX=3
:
このように動きます
つまり4)、6)の処理で入力値nを2であまりが出るまで
割り続けています。
x=4(=2*2)にいくまでに、
4で割れる条件が処理されています(2で割る処理を行っています)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DoEvents関数って何?
-
小数点を含む数値かどうか判断...
-
エクセルVBA 時間抜けの取得
-
win10で、正確な待ち時間の作り方
-
あっち向いてホイのプログラム...
-
C言語 再帰処理のメリットとデ...
-
C言語のタイマー処理
-
マルチタスクについて
-
vb2008より、ファイル読み込み...
-
c言語で配列の要素で偶数のも...
-
ノットイコールを教えて下さい
-
gpuと並列処理を行うcpuの処理...
-
ポストプロセッサ・プリプロセ...
-
c言語。 組み合わせ最適化問題...
-
再帰処理を用いて階乗を求める...
-
ソケットからの入力をWaitForMu...
-
実行時のCPU使用率を増やしたい
-
異なるプログラミング言語を連...
-
クリスタルレポートでの出力時...
-
他サイト数値を自サイトに反映...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
Excel VBAにて、2GB超の点群デ...
-
SQLの速度をあげるには・・・
-
絶対パスの取得について
-
WebBrowserの読み込み待ちの処...
-
プログラム上のCPU稼働率低減に...
-
C言語 再帰処理のメリットとデ...
-
テキストファイルの空行をスキ...
-
実行時のCPU使用率を増やしたい
-
C言語 時刻差分の算出方法
-
Excel VBA データ削除の高速化
-
VBでの簡易電卓の作成(減算方...
-
Excel(VBA)でSetTimer関数を使...
-
プログラミングの授業でPython...
-
If Not c Is Nothing Then ~延...
-
C言語で、文字とか入力されなく...
-
C言語:関数を使うメリットとデ...
おすすめ情報