Java两个不同的自然数a和b,如果整数a的全部因子(包含1,不含a本身)之和等于b;且整数b的全部因子(包含1,不含b本身)之和等于a,则整数a和b称为亲密数。求3000以内的全部亲密数(Ziph)

@Java

大家好,我是Ziph!

题目:
两个不同的自然数a和b,如果整数a的全部因子(包含1,不含a本身)之和等于b;且整数b的全部因子(包含1,不含b本身)之和等于a,则整数a和b称为亲密数。求3000以内的全部亲密数

import java.util.Scanner;

public class Factor {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("你要打印多少以内的亲密数:");
		int num = sc.nextInt();
		for(int a = 2; a < num; a++) {//a = 2,因为1是因子
            int b = sum(a);
            if (sum(b) == a && a < b) {//a < b是将a、b排序,把重复的数排除
                System.out.println(a + "的亲密数是:" + b);
            }
        }
	}
	//计算此数所有因子的和
    public static int sum(int n) {
        int sum = 0;
        for(int i = 1; i <= n / 2; i++){
            if(n % i == 0){
                sum += i;
		 	}
        }
        return sum;
    }
}

执行结果:
在这里插入图片描述
有问题请留言回复!

拜拜

发布了32 篇原创文章 · 获赞 66 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104269478