本文主要是介绍杂题——亲密数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。输入格式
无
输出格式
3000以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)
一对亲密数只输出一次, 小的在前样例输入
无
样例输出
(220,284)(1184,1210)(2620,2924)
分析:
用HashMap存储, 键为该数,值为该数的因子和
import java.util.*;
public class Main {static Map<Integer,Integer> map=new HashMap<>();//键为该数,值为该数的因子和public static void main(String[] args) {for(int i=1;i<=3000;i++) {factorsSum(i);}}public static void factorsSum(int n) {int sum=0;for(int i=1;i<n;i++) {//计算该数的因子和if(n%i==0) {sum+=i;}}if(map.containsKey(sum)) {//如果B的因子和等于Aif(map.get(sum)==n) {//A的因子和等于BSystem.out.print("("+sum+","+n+")");}}else {map.put(n, sum);}}
}
这篇关于杂题——亲密数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!