View Code of Problem 93

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<climits>
#include<cmath>
#include<unordered_map>

using namespace std;

int solve(int num) {

	int sum = 0;
	for (int i = 2; i < sqrt(num); i++) {

		if (num % i == 0) {

			sum += i;
			sum += num / i;
		}
	}

	return sum + 1;
}


int main()
{
	int m, n;
	cin >> m >> n;

	if (m > n)
		swap(m, n);

	for (int a = m; a <= n; a++) {

		//a与b是否为亲密数

		int b = solve(a);	//直接先使 b = a的因数和

		if (a >= b)
			continue;

		int sumb = solve(b);	//b的因数和

		if (sumb <= n && sumb == a) {	//b的因数和 = a

			cout << a << " " << b << endl;
		}

	}
}

Double click to view unformatted code.


Back to problem 93