0402「約数の総和を求めよう」
例題
たかしくんは完全数について完全に理解したが、この余白はその説明を書くには狭すぎる。
(※今回の例題は完全数についての知識は必要ありません)
整数値 n を標準入力に入力したとき、その整数の約数の総和を計算し、その結果を標準出力に出力するプログラムを作成しなさい。
実行例1
標準入力
6
標準出力
6
実行例2
標準入力
12
標準出力
16
サンプルコード
import java.util.Scanner; public class Ex_04_02 { public static void main(String[] args) { // 入力 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); // 計算 int sum = 0; for(int i=1; i<n; i++) { // 判定 if(n%i==0) sum += i; // i が n の約数のとき、i を sum に加える } // 出力 System.out.println(sum); } }
応用
約数ではなく、1 から n までの d の倍数の総和を求めるプログラムに書き換えてみましょう!
ヒント
- 約数のときは i<n のあいだ判定を繰り返しましたが、倍数は n 自身を含むことがあるので n<=i のあいだ判定を繰り返しましょう
- 「i が d の倍数のとき、i を sum に加える」はどのように表記できるでしょうか?
- i を d で割ったあまりが0である (i%d==0) とき、i は d の倍数です