Câu hỏi:

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()

Giải thích:

  1. 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 ).

  2. 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.

  3. 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ợ.


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử