icantech
Lập trình Python
2953
26/10/2023

Tất tần tật về số hoàn hảo mà bạn cần biết và cách kiểm tra số hoàn hảo trong Python

Số hoàn hảo là một khái niệm toán học có nguồn gốc từ thời cổ đại và đã thu hút sự quan tâm của các nhà toán học suốt hàng thế kỷ. Được định nghĩa và nghiên cứu bởi các nhà toán học cổ đại như Euclid và Pythagoras, Euclid đã tìm ra cách xây dựng số hoàn hảo từ các ước số của nó, bật mí là số hoàn hảo đầu tiên là 6. Vậy số hoàn hảo Python là gì? Làm thế nào để kiểm tra số hoàn hảo Python? Cùng tìm hiểu trong bài viết dưới đây nhe!

1. Số hoàn hảo là gì?

Số hoàn hảo Python (perfect number) là một số tự nhiên mà tổng của tất cả các ước số thực sự của nó (không tính chính nó) bằng chính số đó.

so-hoan-hao

Ví dụ, số hoàn hảo đầu tiên và phổ biến nhất là số 6. Số 6 có các ước số thực sự là 1, 2 và 3, và 1 + 2 + 3 = 6, do đó nó là số hoàn hảo. Các số hoàn hảo khác bao gồm 28, 496, và 8128,..

1.1. Ước số là gì?

Để tìm hiểu kĩ hơn về số hoàn hảo và cách kiểm tra số hoàn hảo trong Python, chúng ta sẽ tìm hiểu kĩ hơn về Ước số.

Gọi N là một số nguyên. Danh sách các ước của N là tập hợp các số tự nhiên mà N chia hết cho chúng. Để tìm danh sách này, ta kiểm tra từ 1 đến N, và những số mà N chia hết thì sẽ được thêm vào danh sách ước của N.

Ví dụ: ước số của số 12 là 1, 2, 3, 4, 6, và 12, vì bạn có thể chia 12 cho mỗi trong số các số này mà không có phần dư.

1.2. Kiểm tra số hoàn hảo Python

  • Bước 1: Nhập số nguyên dương N.
  • Bước 2: Khởi tạo biến sum_ước = 0.
  • Bước 3: Duyệt qua các số từ 1 đến N - 1.
  • Bước 4: Nếu N chia hết cho số đó mà không có phần dư, thì thêm số đó vào sum_ước.
  • Bước 5: Sau khi duyệt qua tất cả các số, kiểm tra xem sum_ước có bằng N hay không.
  • Bước 6: Nếu sum_ước bằng N, thì N là số hoàn hảo, ngược lại thì không phải.

Dưới đây là đoạn chương trình kiểm tra số hoàn hảo trong Python:

def kiem_tra_so_hoan_hao(N):

    sum_ước = 0

    for i in range(1, N):

        if N % i == 0:

            sum_ước += i

    if sum_ước == N:

        return True

    else:

        return False

 

# Nhập số nguyên dương N từ người dùng

N = int(input("Nhập một số nguyên dương: "))

 

if kiem_tra_so_hoan_hao(N):

    print(N, "là số hoàn hảo.")

else:

    print(N, "không phải là số hoàn hảo.")

Kết quả:

Nhập một số nguyên dương: 6

6 là số hoàn hảo.

2. Một số bài toán áp dụng kiểm tra số hoàn hảo trong Python

2.1. In ra các số hoàn hảo từ 1 đến n Python

  • Bước 1: Nhập giới hạn n từ người dùng.
  • Bước 2: Tạo một danh sách trống để lưu trữ các số hoàn hảo (số_hoan_hao).
  • Bước 3: Lặp qua các số từ 1 đến n.
  • Bước 4: Trong mỗi vòng lặp, kiểm tra xem số đó có phải là số hoàn hảo hay không bằng cách tính tổng các ước số của nó.
  • Bước 5: Nếu số đó là số hoàn hảo, thêm nó vào danh sách số_hoan_hao.
  • Bước 6: Sau khi kết thúc vòng lặp, in ra danh sách số_hoan_hao.

Dưới đây là chương trình in ra liệt kê các số hoàn hảo nhỏ hơn n Python:

def kiem_tra_so_hoan_hao(N):

  sum_ước = 0

  for i in range(1, N):

      if N % i == 0:

          sum_ước += i

  if sum_ước == N:

      return True

  else:

      return False

 

def tim_cac_so_hoan_hao(n):

  so_hoan_hao = []

  for i in range(1, n + 1):

      if kiem_tra_so_hoan_hao(i):

          so_hoan_hao.append(i)

  return so_hoan_hao

 

n = int(input("Nhập n: "))

so_hoan_hao = tim_cac_so_hoan_hao(n)

print("Các số hoàn hảo từ 1 đến", n, "là:", so_hoan_hao)

Kết quả:

Nhập n: 100

Các số hoàn hảo từ 1 đến 100 là: [6, 28]

Như vậy, ICANTECH đã hướng dẫn bạn viết hàm liệt kê các số hoàn hảo nhỏ hơn n.

2.2. Tìm và in ra các số hoàn hảo trong danh sách 

  • Bước 1: Tạo một danh sách rỗng để lưu trữ các số hoàn hảo (số_hoan_hao).
  • Bước 2: Duyệt qua từng phần tử trong danh sách ban đầu.
  • Bước 3: Đối với mỗi phần tử, kiểm tra xem nó có phải là số hoàn hảo bằng cách sử dụng hàm kiem_tra_so_hoan_hao.
  • Bước 4: Nếu phần tử là số hoàn hảo, thêm nó vào danh sách số_hoan_hao.
  • Bước 5: Sau khi duyệt qua tất cả các phần tử trong danh sách ban đầu, danh sách số_hoan_hao chứa tất cả các số hoàn hảo có trong danh sách ban đầu.

Dưới đây là chương trình liệt kê các số hoàn hảo có trong danh sách def kiem_tra_so_hoan_hao(N):

    sum_ước = 0

    for i in range(1, N):

        if N % i == 0:

            sum_ước += i

    return sum_ước == N

 

def liet_ke_so_hoan_hao_trong_danh_sach(danh_sach):

    so_hoan_hao = []

    for num in danh_sach:

        if kiem_tra_so_hoan_hao(num):

            so_hoan_hao.append(num)

    return so_hoan_hao

danh_sach = [28, 6, 12, 8, 30, 496, 14, 10, 8128, 7, 15]

so_hoan_hao_trong_danh_sach = liet_ke_so_hoan_hao_trong_danh_sach(danh_sach)

print("Các số hoàn hảo trong danh sách là:", so_hoan_hao_trong_danh_sach)

Kết quả:

Các số hoàn hảo trong danh sách là: [28, 6, 496, 8128]

3. Lời Kết

Như vậy, ICANTECH đã giúp bạn tìm hiểu về số hoàn hảo Python và cách kiểm tra số hoàn hảo. Hi vọng các bạn có thể áp dụng các kiến thức trên vào công việc và học tập. Chúc các bạn thành công!

Nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình Python online tại ICANTECH nhé

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình Python

Bài tương tự