package exec;
import java.util.ArrayList;
import java.util.Scanner;
/**
问题描述
有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如:
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
* @author Vivinia
*
* 2018年2月3日
*/
public class A {
public static void main(String[] args) {
ArrayList<Integer> ln=new ArrayList<Integer>();
ArrayList<Integer> lm=new ArrayList<Integer>();
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int m=input.nextInt();
int mn=1,mm=1; //最后因子所加的和
input.close();
ln.add(1); //1是所有数的因子,先保存
lm.add(1);
for(int i=2;i<n/2+1;i++) { //从2开始遍历,1已经保存了
if(n%i==0&&!ln.contains(i)&&!ln.contains(n/i)) {
ln.add(i);
ln.add(n/i);
mm+=i;
mm+=n/i;
}
}
for(int i=2;i<m/2+1;i++) {
if(m%i==0&&!lm.contains(i)&&!lm.contains(m/i)) {
lm.add(i);
lm.add(m/i);
mn+=i;
mn+=m/i;
}
}
if(mm==m&&mn==n)
System.out.println("yes");
else
System.out.println("no");
}
}
蓝桥杯-友好数
最新推荐文章于 2020-03-07 16:53:22 发布

2230

被折叠的 条评论
为什么被折叠?



