問題 1 素数判定
-
Upload
jolene-sutton -
Category
Documents
-
view
36 -
download
0
description
Transcript of 問題 1 素数判定
1
問題 1 素数判定
入力した正の整数値が素数であるかどうかを判定するプログラム。 Ctrl-D が入力されるまで判定を繰り返す。
% ./a.out自然数を入力: 3535 は素数ではない。自然数を入力: 99 は素数ではない。自然数を入力: 1717 は素数である。自然数を入力: -9入力エラーです。自然数を入力: Ctrl-Dプログラムを終了します。%
この色はプログラムによる出力
2
問題 2 素因数分解
自然数を入力し、素因数に分解するプログラムを作れ。エラー処理も行うこと。
% ./a.out自然数を入力: 2424 = 2*2*2*3% ./a.out自然数を入力: 144144 = 2*2*2*2*3*3% ./a.out自然数を入力: -9入力エラー%
この色はプログラムによる出力
3
問題 3 最大公約数
ユークリッドの互除法を用いて、入力した 2 つの自然数の最大公約数を求めるプログラムを作れ。
% ./a.out自然数を 2 つ入力: 54 144144 と 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 円返していくことにする。一年後から完済するまで、毎年の返済額、残額、返済額の合計を表示するプログラムを作れ。利息は複利で計算するものとする。
% ./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 円%
プログラム実行結果の表示
一年後の借金の総額は x (1+r/100)である、これから y を引いた金額が残金である。二年目以降も、残金に ( 1+r/100)を掛けた金額が借金の総額で、これから y を引いた金額が残額である。借金の総額が y 以下であれば、返済が完了する。 y 円を返済して終了する l 。
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 円を返済