Xác định và tìm số hoàn thiện với Python

26
Lập trình Python

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

  1. 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
  2. b) Tìm các số hoàn thiện nhỏ hơn hoặc bằng n
  3. 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()