- ベストアンサー
プログラムの解説をお願いします。
2以上の数値を入力し、素因数分解した結果を表示しなさい。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ /*for解説コメントをお願いします。*/ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } } 全て解説を頼むと考えなくなるため、3) の解説をお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- kmee
- ベストアンサー率55% (1857/3366)
- buenaarbol
- ベストアンサー率47% (11/23)
- TinyPine
- ベストアンサー率30% (719/2386)
関連するQ&A
- 素因数分解プログラムで、5は5と表示するのは?
練習問題 5-15 2以上の数値を入力し、素因数分解した結果を表示しなさい。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ /*for解説コメントをお願いします。*/ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } } 以上のプログラムですが、100と入力すると→2 2 5 5と表示されます。 5と入力すると→5と表示されます。どこのプログラムで5は5しか割り切れないと 判断しているのでしょうか? 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- 素因数プログラムで、間違えて因数4で割らない
練習問題 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; } }
- ベストアンサー
- C・C++・C#
- 解説をお願いします
解説をお願いします。 次のプログラミングの解説をお願いします。 #include<stdio.h> int main(void) int n,m,x; char my_turn; printf("最後にタバスコを取った側がピザを食べます\n"); printf("タバスコの数?"); scanf("%d",&n); printf("1回にタバスコを振れる最大の数?"); scanf("%d",&m); if(n < 1 || m < 1) return 0;//負数の入力を拒否します for(my_turn = 1; n!=0; my_turn ^=1){ *1 if(my_turn){ x = (n - 1)%(m + 1);//なぜこの様な式になるのかを特に教えてください。 if(x == 0) x =1; printf("私は %d 回タバスコを振ります\n",x); }else do{ printf("何回振りますか?"); scanf("%d",&x); }while(x <= 0 || x > m || x > n); n = n - x; printf("残りは %d 回です\n",n); } if(my_turn) printf("あなたの負けです\nおいしく召し上がれ"); else printf("私の負けです\nいただきます"); return 0; }
- 締切済み
- C・C++・C#
- 解説をお願いします。
どこを変えればよいのでしょうか? #include<stdio.h> int main(void) int n,m,x; char my_turn; printf("最後にタバスコを取った側がピザを食べます\n"); printf("タバスコの数?"); scanf("%d",&n); printf("1回にタバスコを振れる最大の数?"); scanf("%d",&m); if(n < 1 || m < 1) return 0;//負数の入力を拒否します for(my_turn = 1; n!=0; my_turn ^=1){ *1 if(my_turn){ x = (n - 1)%(m + 1);//なぜこの様な式になるのかを特に教えてください。 if(x == 0) x =1; printf("私は %d 回タバスコを振ります\n",x); }else do{ printf("何回振りますか?"); scanf("%d",&x); }while(x <= 0 || x > m || x > n); n = n - x; printf("残りは %d 回です\n",n); } if(my_turn) printf("あなたの負けです\nおいしく召し上がれ"); else printf("私の負けです\nいただきます"); return 0; } 問題の条件を入力した瞬間に,先手か後手かどちらか必勝かが分かります. そこで,先手必勝の場合はコンピュータが先手を選択し,後手必勝の場合は,コン ピュータは必ず後手を勝手に選択する処理を追加し,人間がコンピュータに絶対に 勝てないプログラムに変更する、
- 締切済み
- C・C++・C#
- 素数を判定するプログラム
整数をひとつ入力して、それが素数かどうかを判定するプログラムを作ったのですが、素数でないものを入力しても「素数です」といわれます。 どうもfor文が評価されていないような気がしますが、原因がわかりません。 // homework4.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 #include <stdio.h> int main(int argc, char* argv[]) { int number; int n = 2; int i; printf("1より大きい整数を入力してください: "); scanf("%d",&number); while (number <= 1) { printf("1より大きい整数を入力してください: "); scanf("%d",&number); } if (number == 2) { printf("%dは素数です\n",number); goto OUT; } else { for (; n == number - 1; n++) { i = number % n; if (i == 0) printf("%dは素数ではありません\n", number); if (i == 0) goto OUT; } } printf("%dは素数です\n", number); OUT: return 0; } どうかよろしくお願いします。
- ベストアンサー
- C・C++・C#
- プログラムがエラーが出る原因
以下のプログラムがエラーが出る原因を教えてください。 2以上の数値を入力し、素因数分解した結果を表示するプログラム。 #include <stdio.h> int main() { int n, x; scanf("%d", &n );/* for( x = 2 ; n > 1 ; x++ ){ while( ( n % x ) == 0 ){ printf( "%d ", x ); n /= x; } } return 0; } エラー表示 $ gcc s.c -o s.exe s.c:6:18: unterminated comment s.c: In function `main': s.c:6: error: syntax error at end of input 環境 1) テキストエディタ→秀丸 秀丸のファイル保存方法 ・ファイル名→C言語ソースファイル(*c) ・エンコードの種類→自動判定ー日本語(Shift-Jis) ・改行コード→自動(変更なし) 2) コンパイルソフト →MinGW 3) シェル→MSYS
- ベストアンサー
- C・C++・C#
- C言語に詳しい方、ご指導をお願いします。
C言語を今勉強しています。 ある調べたい数値を入力して、txtの中に入っている数字(10000までの素数)を読み込み、その素数たちを利用して素因数分解しようとしています。 しかし、何度試しても読み込みだけしか行われず、 調べたい数値を入力することすらできません。 どこに問題があるのでしょうか、ぜひご指導をお願いします。 今作成しているプログラムです。 #include<stdio.h> void main(void) {int i,k,num,p[10000]; {for(i=0;scanf("%d",&p[i])!=EOF;i++){} num=i; } printf("素因数分解したい整数は?\n"); scanf("%ld",&k); printf("%ld=",k); while(p[i]<=num) { for(i=0;p[i]<=num;i++) {if((k%p[i])==0) {printf("%ld*",p[i]); k=k/p[i]; break; } } } printf("%ld\n",k); } txtの中身 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 ・ ・ ・ 9817 9829 9833 9839 9851 9857 9859 9871 9883 9887 9901 9907 9923 9929 9931 9941 9949 9967 9973
- ベストアンサー
- C・C++・C#
- C言語の簡単なプログラム
簡単な足し算のみの電卓をC言語で作っています。 /が入力されるまで足し算を繰り返すものです。 コンパイルをして、足し算を繰り返すところまでは上手くいったのですが、 /を入力してのループの抜け方がわかりません。 #include<stdio.h> int main(void) { int x=0,z; printf("数値を入力\n"); printf("終了は/を入力\n"); printf("\n結果 %d\n",x); while(1){ scanf("%d",&z); x=x+z; /* 足し算の計算 */ printf("結果 %d\n",x); /* 現在の計算結果を表示 */ } printf("終了 結果: %d\n",x); /* 計算の終了、合計値の表示 */ return 0; } while文のなかにifでいれればいいのでしょうか? その場合、 if(z=='/') break; でいいんでしょうか? if文以外のやり方がある場合も教えていただけたらと思います。 よろしくお願いします。
- 締切済み
- その他(インターネット・Webサービス)
- 素因数分解のプログラムを作成しました。
素因数分解のプログラムを作成しました。 なぜか11桁を超えた場合、正しく表示されません!! アドバイス等お願いします。 あと、処理時間も組んでみましたがこちらもうまくいきません。 改善をお願いしますm(_ _)m #include<stdio.h> #include<time.h> void fanction(int); void main(void) { int n; clock_t start_time, end_time; printf("整数を入力してください。\n"); scanf("%d",&n); start_time = clock(); fanction(n); end_time = clock(); printf("\n\n処理時間:%.3f秒\n",(double)(end_time - start_time) / CLOCKS_PER_SEC); return 0; } void fanction(int n) { int m; char c='='; for(m=2;n != 1;m++) { while(n%m == 0) { n = n/m; printf("%c%d",c,m); c='*'; } } }
- 締切済み
- C・C++・C#
- C言語プログラムについての質問です。下のプログラムがなぜ降順で出力され
C言語プログラムについての質問です。下のプログラムがなぜ降順で出力されるのか分かりません。何回も確認したのですが、不等号の向きが昇順になっているのに、どうして降順になるのかが理解できません。 ご教授お願いします。 #include <stdio.h> #define MAX 10000 int main (int argc, const char * argv[]) { int N,data[MAX],d[MAX],j,k,w,x,a; x=0; a=1; do{printf("学生番号を入力してください\n"); scanf("%d",&N); if(N!=0){printf("得点を入力してください\n"); scanf("%d",&data[N]);}x++;} while(N!=0); for(j=0; j<x;j++){ d[j]=data[j];} for(j=0; j<x;j++) {for(k=0;k<x-j-1;k++){ if(d[k]>d[k+1]){ w=d[k]; d[k]=d[k+1]; d[k+1]=w;}}} printf("昇順での整列結果\n"); for(j=x-1;j>0;j--){ printf("%d位 %d点\n",a,d[j]);a++;} return 0; }
- ベストアンサー
- C・C++・C#
補足
ご回答ありがとうございます。 A;「C」というのは「C言語」のこと。 CはC言語了解しました^^ 現在解読中です。 再度何か質問するかもしれませんが解決まで、しばらくお待ちください。 3) for( x = 2 ; n > 1 ; x++ ){ 4) while( ( n % x ) == 0 ){ 3)と4)の「コラボレーション」悩まされています。