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:
def soHoanThien(n):
tong = 0
for i in range(1, n):
if n % i == 0:
tong += i
if tong + n == 2*n:
return True
else:
return False
fin = open("SOHT.INP","r")
fout = open("SOHT.OUT","w")
a = fin.readline()
t = a.split()
m, n = int(t[0]), int(t[1])
if soHoanThien(n):
fout.write("1\n")
else:
fout.write("0\n")
for i in range(1,n):
if soHoanThien(i):
fout.write(str(i)+" ")
fout.write("\n")
for j in range(m, n):
if soHoanThien(j):
fout.write(str(j) + " ")
fin.close()
fout.close()