算法训练 友好数
时间限制:1.0s 内存限制:256.0MB
问题描述
有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如:
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是友好的。
编写程序,判断两个数是否是友好数。
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
示例代码:
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 public class Main { 6 public static void main(String[] args) throws IOException { 7 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 String[] str = br.readLine().split(" "); 9 int m = Integer.parseInt(str[0]); 10 int n = Integer.parseInt(str[1]); 11 int sum_m = f(m); 12 int sum_n = f(n); 13 14 if(sum_m == n && sum_n == m){ 15 System.out.println("yes"); 16 }else 17 System.out.println("no"); 18 19 } 20 21 private static int f(int x) { 22 int sum = 0; 23 for(int i = 1 ; i < x ; i++ ){ 24 if(x % i ==0){ 25 sum += i; 26 } 27 } 28 return sum; 29 } 30 31 }