蓝桥杯 算法训练 ALGO-117 友好数

算法训练 友好数  
时间限制: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是友好的。
  编写程序,判断两个数是否是友好数。
输入格式
  一行,两个整数,由空格分隔
输出格式
  如果是友好数,输出"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 }

 

posted @ 2017-03-13 19:35  C3Stones  阅读(360)  评论(0编辑  收藏  举报