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:
Đị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