计算亲密数

11 篇文章 0 订阅
3 篇文章 0 订阅

亲密数是具有特殊性质的整数。亲密数展示了两个整数之间通过因子的密切联系。

如果整数3 的因子和等于整数匕整数1)的因子和等于整数3, 因子包括1 但不包括本身,且 3 不 等 于 匕 则 称 3、1)为亲密数对。 

例如,220 和 204 便是一对亲密数,因为其满足如下规则。 

220 的各个因子之和为:1+2+4+5+10+11+20+22+44+55+110=204。 

204 的各个因子之和为:1+2+4+71 + 142=220。 

另外,1184和 1210是一对亲密数,因为其满足如下规则。 

1184 的各个因子之和为:1+2+4+8+16+32+37+74+148+296+592=1210。 

1210 的各个因子之和为:1+2+5+10+11+22+55+110+121+242+605=1210

 

下面是C++代码实现:

 

#include<iostream>
using namespace std;

void caculate(int range) {
	int A[100],B[100],countA,countB, sum1,sum2;
	for (int i = 1; i <= range; i++) {
		countA = 0;
		countB = 0;
		sum1 = 0;
		sum2 = 0;
		for (int j = 1; j <= i / 2 + 1; j++) {
			if (i%j == 0) {
				A[countA++] = j;
				sum1 += j;
			}
		}
		for (int k = 1; k <= sum1 / 2 + 1; k++) {
			if (sum1%k == 0) {
				B[countB++] = k;
				sum2 += k;
			}
		}
		if (sum2 == i && i != sum1) {
			cout << i << "和" << sum1 << "是亲密数" << endl;
			cout << i << "的真因子是:"<<A[0];
			for (int a = 1; a < countA; a++) {
				cout << "*" << A[a] << " ";
			}
			cout << endl;
			cout << sum1 << "的真因子是:" << B[0];
			for (int b = 1; b < countB; b++) {
				cout << "*" << B[b] << " ";
			}
			cout << endl << endl;
		}
	}
}

int main() {
	caculate(10000);
	system("pause");
}


执行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值