btvn.vn
Tìm kiếm Đăng nhập

Phân tích số thành thừa số nguyên tố

Lưu trên thiết bị này
Thực hành tổng hợp Python · Chọn bài khác

Giảm số đang xét sau mỗi lần tìm được ước

Với số nguyên **n từ 1 trở lên**, đặt `m=n` và bắt đầu thử ước `k=2`. Khi k chia hết m, thêm k vào danh sách rồi lấy `m//k`; nếu chưa chia hết, tăng k. Khi m còn 1, tích các phần tử tìm được bằng n. Số 1 cho list rỗng vì không có thừa số nguyên tố; số nguyên tố cho list đúng một phần tử là chính nó. Nhiệm vụ: lưu mã sau vào tệp `phan-tich-thua-so.py`, chạy và đối chiếu ba trường hợp: ```python def thua_so(n): if n < 1: return None m, k = n, 2 ket_qua = [] while m > 1: if m % k == 0: ket_qua.append(k) m = m // k else: k = k + 1 return ket_qua for n in [1, 12, 13]: print(n, thua_so(n)) ``` Kết quả là `1 []`, `12 [2, 2, 3]`, `13 [13]`. Với 12, các trạng thái sau phép chia là m=6,3,1; tích 2×2×3=12. Thử thêm n=0: hàm trả `None` để báo ngoài phạm vi, tránh kết luận 0 là số nguyên tố. Nếu kết quả sai, in m,k,ket_qua trước mỗi phép chia để tìm vòng lặp gây lệch.

Bài luyện

Hàm `thua_so(12)` trả list nào?
Chọn một đáp án

Bài luyện

Với n=1, vì sao hàm trả `[]`?
Chọn một đáp án

Bài luyện

Cách kiểm nhanh list `[2, 2, 3]` có thể là phân tích của 12 là gì?
Chọn một đáp án

Đang học