Viết chương trình phân tích một số tự nhiên n > 1 thành tích ...

VẬN DỤNG

Câu 1: Viết chương trình phân tích một số tự nhiên n > 1 thành tích các thừa số nguyên tố.

Dữ liệu vào: Số tự nhiên n > 1

Dữ liệu ra: Danh sách các thừa số nguyên tố có tích số bằng n.

Thông tin nhập

Kết quả hiển thị

Số tự nhiên n > 1 : 2024

Danh sách các thừa số nguyên tố có tích bằng 2024: 2 2 2 11 23

Hướng dẫn: Sử dụng danh sách A chứa các thừa số nguyên tố; ban đầu, danh sách A là rỗng. Phân tích số tự nhiên n > 1 thành các thừa số nguyên tố bằng cách chia n cho các số tự nhiên 1 bắt đầu từ 2. Nếu n chia hết cho 1 thì chèn 1 vào danh sách A, rồi gán n bằng phần nguyên của phép chia n cho 1. Nếu n không chia hết cho 1 thì tăng 1 lên 1. Quá trình chia n cho 1 sẽ kết thúc khi n = 1 Cuối cùng, in ra màn hình danh sách A. Cụ thể như sau:

  1. Định nghĩa hàm tichSoNguyenTo(n): # Hàm liệt kê các thừa số nguyên tố có tích số bằng n. 

Tạo danh sách A rỗng # Danh sách chứa các thừa số nguyên tố cần tìm

i = 2 # Bắt đầu từ số 2

Vòng lặp trong khi n >1:

Nếu n chia hết cho i thì:

Chèn i vào cuối danh sách A 

n = lấy phần nguyên của n chia 1

Ngược lại: # n không chia hết cho i 

Tăng i lên 1

Trả về danh sách A

 

2. Chương trình chính

Nhập số nguyên n > 1

A = tichSoNguyenTo(n) # Danh sách A chứa các thừa số nguyên tố

In thông báo "Danh sách các thừa số nguyên tố có tích bằng n: "

In các phần tử trong danh sách A, phân cách nhau bởi khoảng trắng.


*Chương trình tham khảo: 

def tichSoNguyenTo(n):

    """Liệt kê các thừa số nguyên tố có tích số bằng n."""

    A = []  # Danh sách chứa các thừa số nguyên tố cần tìm

    i = 2  # Bắt đầu từ số 2

    while n > 1:

        if n % i == 0:

            A.append(i)  # Chèn i vào cuối danh sách A

            n = n // i  # Lấy phần nguyên của n chia i

        else:

            i += 1  # Tăng i lên 1

    return A

 

# Chương trình chính

n = int(input("Nhập số nguyên n > 1: "))

A = tichSoNguyenTo(n)  # Danh sách A chứa các thừa số nguyên tố

print("Danh sách các thừa số nguyên tố có tích bằng n:", end=" ")

for so_nguyen_to in A:

    print(so_nguyen_to, end=" ")

print()

 

*Giải thích:

- Hàm tichSoNguyenTo(n): 

+ Nhận vào số nguyên n làm tham số.

+ Khởi tạo danh sách A rỗng để lưu trữ các thừa số nguyên tố.

+ Khởi tạo biến i bằng 2, là số nguyên tố nhỏ nhất.

+ Sử dụng vòng lặp while n > 1 để lặp cho đến khi n được phân tích hết.

- Trong vòng lặp: 

+ Nếu n chia hết cho i, thêm i vào danh sách A và cập nhật n bằng thương của n và i.

+ Nếu n không chia hết cho i, tăng i lên 1.

+ Trả về danh sách A.

- Chương trình chính: 

+ Nhập số nguyên n từ người dùng.

+ Gọi hàm tichSoNguyenTo(n) để phân tích n thành các thừa số nguyên tố và lưu kết quả vào danh sách A.

+ In ra thông báo "Danh sách các thừa số nguyên tố có tích bằng n:".

+ Duyệt qua danh sách A và in ra các thừa số nguyên tố, cách nhau bởi khoảng trắng.

*Ví dụ:

- Đầu vào: 12 =>  Đầu ra: Danh sách các thừa số nguyên tố có tích bằng n: 2 2 3

- Đầu vào: 30 => Đầu ra: Danh sách các thừa số nguyên tố có tích bằng n: 2 3 5

- Đầu vào: 17 => Đầu ra: Danh sách các thừa số nguyên tố có tích bằng n: 17


Bình luận

Giải bài tập những môn khác