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 の倍数です