Câu hỏi:
11/07/2024 443Đọc hiểu
Ngày 01/7/1932, Collatz - nhà toán học Đức đề xuất thực hiện phép biến đổi sau với số nguyên dương a:
Với phép biến đổi này, sau khi thực hiện một số lần từ số nguyên a bất kì ta sẽ nhận được 1. Cho đến nay người ta vẫn chưa chứng minh được tính đúng đắn của giả thuyết đó.
Em hãy cho biết:
- Hàm đã viết đã đúng cú pháp Python hay chưa? Nếu chưa đúng hãy tìm và sửa lỗi.
- Biến đổi Collatz (10) và Collatz (15) trả về các kết quả tương ứng là bao nhiêu?
Sách mới 2k7: 30 đề đánh giá năng lực DHQG Hà Nội, Tp. Hồ Chí Minh, BKHN 2025 mới nhất (600 trang - chỉ từ 140k).
Quảng cáo
Trả lời:
Hàm trên còn chứa lỗi cú pháp. Cần sửa lại như sau:
Collatz (10) trả về kết quả là 5.
Collatz (15) trả về kết quả là 46.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Tổng chữ số
Xây dựng hàm sum_ digits tính tổng các chữ số của số nguyên dương n. Viết chương trình nhập số nguyên không âm n từ bản phím, sử dụng hàm đã xây dựng đưa ra màn hình tổng các chữ số của n.
Ví dụ:
Input |
Output |
4825 |
19 |
Gợi ý:
Hàm được xây dựng dựa trên cơ sở hai phép xử lí:
- Trích chữ số hàng đơn vị của n: n % 10.
- Xoá chữ số hàng đơn vị của n: n // 10.
Việc xử lí kết thúc khi có n bằng 0
Câu 2:
Số nguyên tố
Số nguyên tố là số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó. Xây dựng hàm prime kiểm tra số nguyên không âm n (0 ≤ n ≤ 1012) có phải là số nguyên tố hay không, trả về True nếu n là số nguyên tố và False trong trường hợp ngược lại. Viết chương trình nhập số nguyên không âm n (0 ≤ n ≤ 1012) vào từ bàn phím, sử dụng hàm đã xây dựng đưa ra màn hình kết quả kiểm tra n có phải là số nguyên tố hay không.
Ví dụ:
Input |
Output |
31 |
True |
Gợi ý:
- Số 2 là số nguyên tố.
- Số 0, 1 và các số chẵn lớn hơn 2 không phải là số nguyên tố.
- Các số lẻ lớn hơn 2: n là hợp số khi và chỉ khi tồn tại một ước (với 0 ≤ n ≤ 1012). Ở trường hợp này chỉ cần kiểm tra có tồn tại p hay không.
Câu 3:
Cấp số cộng
Ba số a, b, c theo trình tự tạo thành một cấp số cộng nếu tồn tại d để b = a + d và c = b + d. Hãy xây dựng hàm kiểm tra ba số a, b, c có tạo thành một cấp số cộng hay không và trả về giá trị True hoặc False tương ứng. Viết chương trình nhập từ bàn phím ba số thực trên cùng một dòng, các số cách nhau ít nhất một dấu cách. Sử dụng hàm đã tạo để kiểm tra ba số này có tạo thành cấp số cộng hay không (nếu cần thiết có thể đổi chỗ cho nhau) và đưa ra thông báo “Yes” hoặc “No” tương ứng.
Gợi ý: Nên sử dụng các hàm max, min của hệ thống.
Ví dụ:
Input |
Output |
15 5 10 |
Yes |
Gợi ý:
Điều kiện để ba số a, b, c theo trình tự đã nêu tạo thành một cấp số cộng là b - a = = c - b. Với ba số x, y, z muốn kiểm tra xem có thể đổi chỗ để được ba số hạng liên tiếp của một cấp số cộng hay không, ta có thể sắp xếp chúng theo thứ tự tăng dần và sau đó kiểm tra điều kiện tạo cấp số cộng. Cách viết ngắn gọn nhất để sắp xếp ba số theo thứ tự tăng dần là:
x,y,z = min (x,y,z), x + y + z - min (z, y, z) - max (x, y,z) , max (x,y,z)
Câu 4:
Tính giai thừa
Với n nguyên đương, theo định nghĩa n! = 1 × 2 × 3 × … × (n - 1) × n. Em hãy xây dựng hàm tính n! và viết chương trình gọi hàm đưa ra màn hình n! với n là các số nguyên dương được nhập vào từ bàn phím.
Câu 5:
Tổng hai số
Xây dựng hàm kiểm tra với 3 số a, b, c cho trước, trả về giá trị True nếu tồn tại một số là tổng của hai số còn lại, ngược lại trả về giá trị False.
Viết chương trình nhập từ bàn phím ba số nguyên trên cùng một dòng, các số cách nhau ít nhất một dấu cách, sử dụng hàm đã tạo để kiểm tra trong ba số này có số nào là tổng hai số còn lại hay không và đưa ra thông báo “Yes” hoặc “No” tương ứng.
Ví dụ:
Input |
Output |
4 12 8 |
Yes |
Gợi ý: Kiểm tra cả ba trường hợp có thể xảy ra (vét cạn): a = b + c hoặc
b = a + c hoặc c = a + b.
Câu 6:
Các ước thực sự
Ước thực sự của số nguyên dương n là các ước nguyên dương khác l và n. Xây dựng hàm divisors với tham số là số nguyên dương n và trả về số lượng ước thực sự của n, (0 ≤ n ≤ 1012). Viết chương trình nhập vào số nguyên dương n từ bàn phím, (0 ≤ n ≤ 1012), sử dụng hàm đã xây dựng đưa ra màn hình số ước thực sự của n.
Ví dụ:
Input |
Output |
28 |
4 |
Gợi ý:
- Điều kiện để số nguyên dương p là ước thực sự của n là: l < p < n và n % p == 0.
Nếu p là ước thực sự của n thì q = n//p cũng là ước thực sự của n. Đặc biệt, p == q khi và chỉ khi p2 = n
- Như vậy ta chỉ cần tìm các p thoả mãn điều kiện (với 0 ≤ n ≤ 1012):
1 ≤ p ≤ ≤ [ + 0.5]
Câu 7:
Tìm bội chung nhỏ nhất
Xây dựng hàm tìm bội chung nhỏ nhất (BCNN) của hai số nguyên dương x và y. Viết chương trình đưa ra bội chung nhỏ nhất của một số cặp số nguyên dương a, b với dữ liệu nhập vào từ bàn phím.
về câu hỏi!