Bài 4: Hai số tự nhiên m và n được gọi là hai số bạn bè nếu tổng các ước thực sự của n bằng m. Hãy viết chương trình C++ tìm các cặp số bạn bè nhỏ hơn số n cho trước.
Ví dụ: 283 và 220 là cặp số bạn bè vì tổng các ước thực sự của:’
220 là: 2+4+5+10+11+20+22+44+55+110 = 283

làm cột thuế (trong excel
#include <iostream>
using namespace std;
int tongUocThucSu(int x) {
if (x == 1) return 0;
int tong = 1;
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) {
tong += i;
if (i != x / i) tong += x / i;
}
}
return tong;
}
int main() {
for (int a = 2; a < n; a++) { int b = tongUocThucSu(a); if (b > a && b < n) { if (tongUocThucSu(b) == a) { cout << a << " " << b << endl; } } } return 0;int n;
cin >> n;
}
Giải thích:
tongUocThucSu(x) dùng để tính tổng các ước thực sự của x, tức là các ước nhỏ hơn x
Với mỗi số a nhỏ hơn n, tính b = tổng ước thực sự của a
Nếu tổng ước thực sự của b lại bằng a thì a và b là hai số bạn bè
Điều kiện b > a để tránh in lặp lại 2 lần cùng một cặp
Ví dụ:
Input
300
Output
220 284
Lưu ý, ví dụ đúng là 220 và 284 là cặp số bạn bè, không phải 283 và 220 vì tổng các ước thực sự của 220 bằng 284.