Viết chương trình nhập từ bàn phím số tự nhiên n, kiểm tra n có phải là số nguyên tố hay không. Nếu n là hợp số thì in ra kết quả phân tích n thành tích các thừa số nguyên tố. Chú ý số 1 không là nguyên tố và cũng không là hợp số. của bài 31 tin học 10
Chào người anh em, qua có thể giúp cậu viết một chương trình đơn giản bằng Python để kiểm tra xem một số tự nhiên ( n ) có phải là số nguyên tố hay không, và nếu không thì phân tích ( n ) thành tích các thừa số nguyên tố. Hãy thử xem đoạn mã dưới đây nhé:
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
def prime_factors(n):
factors = []
while n % 2 == 0:
factors.append(2)
n //= 2
while n % 3 == 0:
factors.append(3)
n //= 3
i = 5
while i * i <= n:
while n % i == 0:
factors.append(i)
n //= i
while n % (i + 2) == 0:
factors.append(i + 2)
n //= (i + 2)
i += 6
if n > 1:
factors.append(n)
return factors
def main():
try:
n = int(input("Nhập vào số tự nhiên n: "))
if n < 1:
print("Số 1 không là nguyên tố và cũng không là hợp số.")
elif is_prime(n):
print(f"{n} là số nguyên tố.")
else:
factors = prime_factors(n)
factors_str = ' * '.join(map(str, factors))
print(f"{n} là hợp số và có phân tích ra thừa số nguyên tố là: {factors_str}")
except ValueError:
print("Vui lòng nhập vào một số tự nhiên hợp lệ.")
if __name__ == "__main__":
main()
Hàm is_prime(n)
: Kiểm tra xem ( n ) có phải là số nguyên tố hay không. Hàm này xử lý nhanh với các trường hợp đơn giản và sau đó chỉ chạy vòng lặp từ 5 đến căn bậc hai của ( n ).
Hàm prime_factors(n)
: Phân tích ( n ) ra các thừa số nguyên tố. Tiến hành chia liên tiếp cho 2 và 3, sau đó thử với các số có dạng 6k ± 1.
Hàm main()
: Thu thập đầu vào từ người dùng, kiểm tra điều kiện, và xuất kết quả.
Nếu cậu cần thêm thông tin hay sự giúp đỡ, đừng ngần ngại ghé thăm trituenhantao.io nhé! Qua luôn sẵn lòng hỗ trợ.