Bài toán. Số n được gọi là số hoàn thiện nếu tổng các ước của n gấp đôi n.
Ví dụ: 6 là số hoàn thiện vì 6 chia hết cho 1, 2, 3, 6 và: 1 + 2 + 3 + 6 = 12 = 2.6
- a) Kiểm tra n có là số hoàn thiện không? Nếu có ghi ra 1 ngược lại ghi 0
- b) Tìm các số hoàn thiện nhỏ hơn hoặc bằng n
- c) Tìm các số hoàn thiện nằm trên đoạn [m, n].
Yêu cầu: nhập vào 2 số m, n. Kết quả ghi thành 3 dòng thể hiện 3 nội dung trên. Ví dụ:
SOHT.INP |
SOHT.OUT |
16 1000 |
0 6 28 496 28 496 |
Code tham khảo:
#include <iostream>
using namespace std;
int soht(int n) {
int tong = 0;
for (int i = 1; i <= n/2; i++) {
if (n % i == 0) tong += i;
}
if (tong+n == 2*n) return 1;
else return 0;
}
int main() {
freopen("SOHT.INP","r",stdin);
freopen("SOHT.OUT","w",stdout);
int m, n;
cin >> m >> n;
if(soht(n)) cout << 1 << endl;
else cout << 0 << endl;
for (int i = 1; i <= n; i++) {
if (soht(i)) cout << i << " ";
}
cout << endl;
for (int i = m; i <= n; i++) {
if (soht(i)) cout << i << " ";
}
return 0;
}