1 / 8

問題 1  素数判定

問題 1  素数判定. 入力した正の整数値が素数であるかどうかを判定するプログラム。 Ctrl-D が入力されるまで判定を繰り返す。. % ./a.out 自然数を入力: 35 35 は素数ではない。 自然数を入力: 9 9 は素数ではない。 自然数を入力: 17 17 は素数である。 自然数を入力: -9 入力エラーです。 自然数を入力: Ctrl-D プログラムを終了します。 %. この色 はプログラムによる出力. 問題 2  素因数分解. 自然数を入力し、素因数に分解するプログラムを作れ。 エラー処理も行うこと。. % ./a.out

Download Presentation

問題 1  素数判定

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 問題 1 素数判定 入力した正の整数値が素数であるかどうかを判定するプログラム。Ctrl-D が入力されるまで判定を繰り返す。 % ./a.out 自然数を入力:35 35 は素数ではない。 自然数を入力:9 9 は素数ではない。 自然数を入力:17 17 は素数である。 自然数を入力:-9 入力エラーです。 自然数を入力:Ctrl-D プログラムを終了します。 % この色はプログラムによる出力

  2. 問題 2 素因数分解 自然数を入力し、素因数に分解するプログラムを作れ。 エラー処理も行うこと。 % ./a.out 自然数を入力:24 24 = 2*2*2*3 % ./a.out 自然数を入力:144 144 = 2*2*2*2*3*3 % ./a.out 自然数を入力:-9 入力エラー % この色はプログラムによる出力

  3. 問題 3 最大公約数 ユークリッドの互除法を用いて、入力した 2 つの自然数の最大公約数を求めるプログラムを作れ。 % ./a.out 自然数を2つ入力:54 144 144 と 54 の最大公約数は 18 です。 % この色はプログラムによる出力

  4. 問題 4 完全数 完全数とは、約数(自分自身は除く)の和が自身と等しい自然数である。 例)6 の約数は 1, 2, 3 であり、1 + 2 + 3 == 6 であるので、6 は完全数。 6, 28, 496, 8128 は完全数である。 可能な限りたくさんの完全数を探すプログラムを作れ。 % ./a.out 見つけた!6 見つけた!28 見つけた!496 見つけた!8128 ... % ヒント:aが完全数かどうかを判定する部分を作成。     これをaに関するループで囲めば良い。 プログラム実行結果の表示

  5. 約数の和を求める 約数の和を求めるには、1から始めて、順に割っていき、割り切れた数の合計を 求めればよい。 int goukei = 0; int i, n; n=280; // たとえば、280の約数の和を求める for(i=1; i < n; i++){ if( n%i == 0) goukei += i } printf(“%dの約数の和は%d \n", n,goukei);

  6. 問題 5 借金の返済 年率rでx円を借りる。返済は毎年y円返していくことにする。一年後から完済するまで、毎年の返済額、残額、返済額の合計を表示するプログラムを作れ。 利息は複利で計算するものとする。 一年後の借金の総額は x(1+r/100) である、これからyを引いた金額が残金である。 二年目以降も、残金に       (1+r/100) を掛けた金額が借金の総額で、これからyを引いた金額が残額である。 借金の総額がy以下であれば、返済が完了する。y円を返済して終了するl。 % ./a.out 借用金額を入力:1000000 利率を入力(%):3.0 毎年の返済額を入力:100000 借用金額 1000000円、毎年の返済額 100000, 利率 3.00% 1年目, 返済金 100000円, 残金 930000円, 返済額 100000円 2年目, 返済金 100000円, 残金 857900円, 返済額 200000円 ............ 12年目, 返済金 100000円, 残金 6558円, 返済額 1200000円 13年目, 返済金 6755円, 返済金の総額 1206755円 % プログラム実行結果の表示

  7. 繰り返しの考え方 1)x,y,rを入力する 2)x=x*(1+r/100);1年度後の借金額 3)もしy>=xならx円を返済して終了 4)x=x−y;           返済後の借金の残額 5)x=x*(1+r/100);1年度の借金額 6)もしy>=xならx円を返済して終了 7)x=x−y;     。。。。。。。 これを続ける この範囲を繰り返す 繰り返すのは、2)〜4)の間。しかしこれでは、繰り返しの終了判定が 3)で、繰り返しの途中になる。(break文を使えば、途中での終了も可能) あ) whileでの繰り返しの終了判定は、繰り返しの最初におこなう。 い) do〜whileでは繰り返しの最後に行う。 あ)の場合は、3)から5)を繰り返す。 い)の場合は、4)から6)を繰り返す。

  8. x,y,rを入力する x=x*(1+r/100);1年度後の借金額 while (y < x) { x=x−y;           返済後の借金の残額 y円を返済して、返済後の借金額はx円 x=x*(1+r/100);1年度の借金額 } if (x > 0) x円を返済 あ)の場合 x,y,rを入力する x=x*(1+r/100);1年度後の借金額 if (y < x) { do { x=x−y;           返済後の借金の残額 y円を返済して、返済後の借金額はx円 x=x*(1+r/100);1年度の借金額 } while (y < x); } if (x > 0) x円を返済 い)の場合

More Related