Số mạnh mẽ – Lập trình trong Scratch và Python

Số mạnh mẽ – Lập trình trong Scratch và Python

Số mạnh mẽ là gì?

Trong toán học, số mạnh mẽ (powerful number) là một số tự nhiên dương có tính chất đặc biệt liên quan đến số lượng ước số và bình phương của các ước số. Một số nguyên dương n được gọi là số mạnh mẽ nếu số lượng ước số của n lớn hơn hoặc bằng số lượng ước số của mọi số nguyên dương nhỏ hơn n.

Ví dụ về số mạnh mẽ

Giả sử chúng ta có số nguyên dương 48. Để kiểm tra xem 48 có phải là số mạnh mẽ hay không, ta sẽ xem xét số lượng ước số của 48 và các bình phương của các ước số.

Số 48 có các ước số sau: 1, 2, 3, 4, 6, 8, 12, 16, 24 và 48.

  • Trong quá trình kiểm tra số lượng ước số của 48, ta thấy rằng 48 có 10 ước số.
  • Tiếp theo, ta kiểm tra các bình phương của các ước số. Trong trường hợp này, không có bình phương nào của ước số nào là ước số khác ngoại trừ 1 và chính nó. Do đó, ta không phải tăng số lượng ước số của 48 thêm.

Vậy số 48 không phải là số mạnh mẽ, vì số lượng ước số của nó (10) không lớn hơn số lượng ước số của mọi số nguyên dương nhỏ hơn nó.

Read:   Một số công cụ cần thiết khi làm phần mềm Scratch liên quan đến hình ảnh và âm thanh

Lưu ý rằng ví dụ trên chỉ là một số nguyên dương đơn lẻ. Đối với các số mạnh mẽ, số lượng ước số và các bình phương của các ước số có thể đa dạng hơn.

Thuật Toán kiểm tra số mạnh mẽ

Để kiểm tra xem một số nguyên dương nào đó có phải là số mạnh mẽ hay không, ta có thể áp dụng thuật toán như sau:

  1. Đếm số lượng ước số của số n.
  2. Duyệt qua các số nguyên dương i từ 1 đến căn bậc hai của n:
    • Nếu i là ước số của n, tăng biến đếm lên 1.
    • Nếu i^2 là ước số của n, tăng biến đếm lên 1.
  3. Kiểm tra xem số lượng ước số của n có lớn hơn hoặc bằng số lượng ước số của mọi số nguyên dương nhỏ hơn n không. Nếu đúng, số n là số mạnh mẽ. Ngược lại, n không phải là số mạnh mẽ.

Dưới đây là một ví dụ về cách lập trình trong Python và Scratch

Kiểm tra số mạnh mẽ trong Python:















def is_powerful_number(n):
    divisor_count = 0
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            divisor_count += 1
            if i != 1 and i**2 != n:
                divisor_count += 1
    return divisor_count >= n

# Kiểm tra số mạnh mẽ
num = int(input("Nhập một số nguyên dương: "))
if is_powerful_number(num):
    print(num, "là số mạnh mẽ")
else:
    print(num, "không là số mạnh mẽ")

Chương trình trên sử dụng hàm is_powerful_number(n) để kiểm tra xem số n có phải là số mạnh mẽ hay không. Hàm này duyệt qua các số từ 1 đến căn bậc hai của n và đếm số lượng ước số của n cùng với các bình phương của các ước số. Cuối cùng, hàm kiểm tra xem số lượng ước số của n có lớn hơn hoặc bằng số lượng ước số của mọi số nguyên dương nhỏ hơn n không.

Read:   Trong python có lệnh sắp xếp sẵn rồi vậy còn học thuật toán sắp xếp để làm gì?

Chương trình yêu cầu người dùng nhập vào một số nguyên dương và sau đó sử dụng hàm is_powerful_number để kiểm tra xem số đó có phải là số mạnh mẽ hay không. Cuối cùng, chương trình in ra thông báo tương ứng với kết quả kiểm tra.

Kiểm tra số mạnh mẽ trong Scratch

Đây là một ví dụ về cách lập trình kiểm tra xem một số có phải là số mạnh mẽ hay không trong Scratch:

  1. Mở trình soạn thảo Scratch và tạo một dự án mới.
  2. Tạo một biến “number” để lưu trữ số cần kiểm tra.
  3. Tạo một biến “is_powerful” để lưu trữ kết quả kiểm tra.
  4. Tạo một khối “when green flag clicked” để bắt đầu chương trình.
  5. Trong khối này, sử dụng một khối “ask and wait” để yêu cầu người dùng nhập số cần kiểm tra. Khi người dùng nhập xong, đặt giá trị của biến “number” bằng giá trị nhập vào.
  6. Tiếp theo, tạo một khối “set is_powerful to true” để đặt giá trị ban đầu của biến “is_powerful” là “true”.
  7. Tạo một khối “repeat” để duyệt qua các số từ 1 đến căn bậc hai của số cần kiểm tra.
  8. Trong khối “repeat”, sử dụng một khối “if-else” để kiểm tra xem số đang được xét có phải là ước số hay không:
    • Nếu số đang xét là ước số, sử dụng một khối “if” để kiểm tra xem bình phương của ước số đó có là ước số khác không. Nếu có, đặt giá trị của biến “is_powerful” là “false” và dừng khối “repeat” bằng khối “stop all”.
  9. Sau khi kết thúc khối “repeat”, sử dụng một khối “if-else” để kiểm tra giá trị của biến “is_powerful”:
    • Nếu giá trị là “true”, sử dụng một khối “say” để in ra màn hình “Number is powerful!”.
    • Nếu giá trị là “false”, sử dụng một khối “say” để in ra màn hình “Number is not powerful!”.
  10. Kết thúc chương trình.
Read:   Một số giải pháp, sáng kiến về công tác chủ nhiệm

Lưu ý rằng việc kiểm tra số mạnh mẽ trong Scratch cũng phụ thuộc vào cách bạn triển khai thuật toán kiểm tra số mạnh mẽ. Bạn có thể sử dụng một thuật toán khác nhau tùy thuộc vào sự linh hoạt của Scratch và yêu cầu cụ thể của bạn.

Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *