[Java] 藍橋杯ALGO-117 演算法訓練 友好數

柳婼發表於2018-10-11

問題描述
有兩個整數,如果每個整數的約數和(除了它本身以外)等於對方,我們就稱這對數是友好的。例如:
9的約數和有:1+3=4
4的約數和有:1+2=3
所以9和4不是友好的。
220的約數和有:1 2 4 5 10 11 20 22 44 55 110=284
284的約數和有:1 2 4 71 142=220
所以220和284是友好的。
編寫程式,判斷兩個數是否是友好數。

輸入格式
一行,兩個整數,由空格分隔
輸出格式
如果是友好數,輸出”yes”,否則輸出”no”,注意不包含引號。
樣例輸入
220 284
樣例輸出
yes
資料規模和約定
兩個整數都小於10000

package algo117;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        in.close();
        if (b == factor(a) && a == factor(b)) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
    }
    
    private static int factor(int a) {
        int sum = 0;
        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                sum += i;
            }
        }
        return sum;
    }

}

 

相關文章