Viết chương trình nhập số nguyên dương n, hiển thị các ước số của n ra màn hình.
Viết chương trình nhập số nguyên dương n, hiển thị các ước số của n ra màn hình.
Để tính giai thừa của số nguyên n > 1 (kí hiệu n!) theo công thức
n! = n × (n – 1) × (n – 2) × … × 2 × 1,
em phải thực hiện việc nhân lần lượt từng số nguyên từ 1 đến n. Để tìm ước số chung lớn nhất của hai số tự nhiên a, b, em có thể thay thế giá trị số lớn hơn trong hai số bởi hiệu của hai số, tiếp tục thực hiện việc thay thế cho đến khi được hai số bằng nhau lúc đó là giá trị ước chung lớn nhất của hai số tự nhiên a, b. Em hãy tìm một bài toán trong đó việc giải bài toán yêu cầu phải thực hiện một cách lặp lại nhiều lần một thao tác.
Thảo luận (1)Hướng dẫn giảiMột bài toán điển hình yêu cầu thực hiện một cách lặp đi lặp lại nhiều lần một thao tác là tính dãy Fibonacci. Dãy Fibonacci được định nghĩa như sau:
+ F(0)=0
+ F(1)=1
+ F(n)=F(n−1)+F(n−2) với n≥2n≥2
- Giải thích bài toán:
+ Định nghĩa: Mỗi số trong dãy Fibonacci là tổng của hai số trước đó.
+ Thao tác lặp đi lặp lại: Để tính F(n), bạn phải tính F(n−1) và F(n−2), và để tính F(n−1), bạn lại phải tính F(n−2) và F(n−3), và cứ tiếp tục như vậy cho đến khi đạt đến các giá trị cơ bản F(0) và F(1).
+ Phương pháp giải: Có thể giải bài toán này bằng cách sử dụng đệ quy (recursive) hoặc vòng lặp (iterative).
- Ví dụ về chương trình tính dãy Fibonacci:
+ Dưới đây là một chương trình Python sử dụng phương pháp đệ quy để tính số Fibonacci thứ n:
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# Nhập số n từ người dùng
n = int(input("Nhập số nguyên n (n >= 0): "))if n < 0:
print("Vui lòng nhập n lớn hơn hoặc bằng 0.")else:
print(f"Số Fibonacci thứ {n} là {fibonacci(n)}.")
*Giải thích chương trình:
- Hàm đệ quy: Hàm fibonacci(n) tính số Fibonacci thứ n bằng cách gọi chính nó với các tham số nhỏ hơn.
- Điều kiện dừng: Nếu nn là 0 hoặc 1, hàm trả về giá trị tương ứng.
- Nhập dữ liệu: Chương trình yêu cầu người dùng nhập một số nguyên không âm và in ra số Fibonacci tương ứng.
*Kết quả:
- Nếu người dùng nhập 5, chương trình sẽ in ra: Số Fibonacci thứ 5 là 5.
- Nếu người dùng nhập 10, chương trình sẽ in ra: Số Fibonacci thứ 10 là 55.
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình theo hai cách (dùng vòng lặp for và vòng lặp while) để nhập số nguyên dương n, tính và hiển thị tổng số S như sau:
S = 1² + 2² + 3² + … + n²
Thảo luận (1)Hướng dẫn giải*Cách 1: Sử dụng vòng lặp for# Nhập số nguyên dương n
n = int(input("Nhập số nguyên dương n: "))
# Kiểm tra n có phải là số nguyên dương hay không
if n <= 0:
print("Vui lòng nhập số nguyên dương.")
else:
S = 0
for i in range(1, n + 1):
S += i ** 2 # Cộng bình phương của i vào S
print(f"Tổng S = 1² + 2² + ... + {n}² là: {S}")
*Cách 2: Sử dụng vòng lặp while
# Nhập số nguyên dương n
n = int(input("Nhập số nguyên dương n: "))
# Kiểm tra n có phải là số nguyên dương hay không
if n <= 0:
print("Vui lòng nhập số nguyên dương.")
else:
S = 0
i = 1
while i <= n:
S += i ** 2 # Cộng bình phương của i vào S
i += 1 # Tăng i lên 1
print(f"Tổng S = 1² + 2² + ... + {n}² là: {S}")
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình nhập số nguyên dương n, hiển thị các số nhỏ hơn hoặc bằng n và chia hết cho 3 ra màn hình.
Thảo luận (1)Hướng dẫn giải
Em hãy viết lại chương trình trong Ví dụ 5, sử dụng cấu trúc lặp for.
Thảo luận (1)Hướng dẫn giảiChương trình sử dụng cấu trúc lặp for
# Sử dụng cấu trúc lặp for để in ra các số từ 1 đến 5
for i in range(1, 6):
print(i)
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình nhập hai số nguyên dương m và k với k < n.Tìm số nguyên m với điều kiện k < m ≤ n và m chia hết cho k. Nếu tìm thấy thì hiển thị m ra màn hình; ngược lại, hiển thị “Không tìm thấy.”
Thảo luận (1)Hướng dẫn giải# Nhập hai số nguyên dương n và k
n = int(input("Nhập số nguyên dương n: "))
k = int(input("Nhập số nguyên dương k (k < n): "))
# Kiểm tra điều kiện k < n
if k >= n:
print("Vui lòng nhập k < n.")
else:
found = False
for m in range(k + 1, n + 1):
if m % k == 0: # Kiểm tra m có chia hết cho k không
print(f"Số nguyên m tìm thấy là: {m}")
found = True
break # Dừng vòng lặp khi tìm thấy m
if not found:
print("Không tìm thấy.")
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình cho nhập các số nguyên a và hiển thị “Là số nguyên tố.” ra màn hình nếu a là số nguyên tố; ngược lại, hiển thị “Không là số nguyên tố.” Chương trình kết thúc khi số đã nhập nhỏ hơn hoặc bằng 1.
Thảo luận (1)Hướng dẫn giảiwhile True:
# Nhập số nguyên n
n = int(input("Nhập số nguyên (nhập số <= 1 để kết thúc): "))
# Kiểm tra số <= 1 để kết thúc
if n <= 1:
break
# Kiểm tra số nguyên tố
is_prime = True
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
is_prime = False
break
if is_prime:
print("Là số nguyên tố.")
else:
print("Không là số nguyên tố.")
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình nhập số nguyên n > 1, in ra màn hình số nguyên tố nhỏ nhất lớn hơn hoặc bằng n.
Thảo luận (1)Hướng dẫn giảidef is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
# Nhập số nguyên n > 1
n = int(input("Nhập số nguyên n (n > 1): "))
# Tìm số nguyên tố nhỏ nhất lớn hơn hoặc bằng n
while True:
if is_prime(n):
print(f"Số nguyên tố nhỏ nhất lớn hơn hoặc bằng {n} là: {n}")
break
n += 1
(Trả lời bởi Nguyễn Quốc Đạt)
Viết chương trình nhập các số nguyên, tính và in ra màn hình tổng các số nguyên dương. Chương trình kết thúc khi số đã nhập là số nguyên âm.
Thảo luận (1)Hướng dẫn giải# Khởi tạo tổng
tong = 0
while True:
# Nhập số nguyên
n = int(input("Nhập số nguyên (nhập số âm để kết thúc): "))
# Kiểm tra số âm để kết thúc
if n < 0:
break
# Cộng dồn vào tổng nếu n là số nguyên dương
if n > 0:
tong += n
print(f"Tổng các số nguyên dương là: {tong}")
(Trả lời bởi Nguyễn Quốc Đạt)
Viết câu lệnh nhập số tự nhiên a và hiển thị số chữ số của a ra màn hình. Ví dụ, số chữ số của 0; 9; 15; 152; 1000 là 1; 1; 2; 3; 4 theo thứ tự tương ứng.
Thảo luận (1)Hướng dẫn giải