题目 1122: [C语言训练]亲密数 题解

该博客主要探讨了亲密数的概念,即两个不同自然数的因子和相等,并给出了求解3000以内所有亲密数的程序结果。样例输出显示了三对亲密数示例。

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

输入

输出
3000以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)
一对亲密数只输出一次, 小的在前

样例输入

样例输出
(220,284)(1184,1210)(2620,2924)

代码题解:

public static void main(String[] args) {
		int a, i, b, n; // b,n存放因子和;

		for (a = 1; a < 3000; a++) { // 3000以内的全部整数
			for (b = 0, i = 1; i <= a / 2; i++) {// *计算数a的各因子,把各因子之和存放于b
				if ((a % i) == 0) {
					b += i; // 累加因子和
				}
			}
			// 计算b的各因子,把各因子之和存于n
			for (n = 0, i = 1; i <= b / 2; i++) {
				if ((b % i) == 0) {
					n += i; // 累加因子和
				}
			}
			// 通过对比符合条件则输出;
			if (n == a && a < b) {

				System.out.print("(" + a + "," + b + ")");// *若n=a,则a和b是一对亲密数,输出
			}
		}

程序结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值