Liệt kê tất cả các số nguyên tố nhỏ hơn n trong Python và C++

Bài viết này chúng ta cùng tìm hiểu các cách Liệt kê tất cả các số nguyên tố nhỏ hơn n trong Python và C++

Thuật toán liệt kê tất cả các số nguyên tố nhỏ hơn một số nguyên dương n

  1. Khởi tạo một danh sách rỗng để lưu các số nguyên tố (gọi là prime_numbers).
  2. Bắt đầu từ 2 (số nguyên tố đầu tiên) và lặp qua tất cả các số từ 2 đến n – 1 (vì ta muốn tìm các số nguyên tố nhỏ hơn n).
  3. Đối với mỗi số nguyên dương trong khoảng từ 2 đến n – 1, kiểm tra xem nó có phải là số nguyên tố hay không.
  4. Để kiểm tra xem một số x có phải là số nguyên tố, ta thực hiện các bước sau: a. Nếu x nhỏ hơn hoặc bằng 1, thì không phải là số nguyên tố. b. Nếu x là 2 hoặc 3, thì là số nguyên tố. c. Nếu x chia hết cho 2 hoặc 3, thì không phải là số nguyên tố. d. Bắt đầu từ 5, kiểm tra xem x chia hết cho các số từ 5 đến căn bậc hai của x. Nếu x chia hết cho một trong các số này, thì không phải là số nguyên tố. e. Nếu x không chia hết cho bất kỳ số nào trong các số từ 5 đến căn bậc hai của x, thì x là số nguyên tố.
  5. Nếu số đang được kiểm tra trong bước 3 là số nguyên tố, thêm nó vào danh sách prime_numbers.
  6. Khi đã kiểm tra qua tất cả các số từ 2 đến n – 1, danh sách prime_numbers sẽ chứa tất cả các số nguyên tố nhỏ hơn n.
  7. In danh sách prime_numbers để hiển thị các số nguyên tố.
Read:   Tính S(n) = 1/2 + 1/4 + … + 1/2n - Lập trình bằng Python và Scratch

Đây là cách thuật toán hoạt động. Nó kiểm tra từng số trong khoảng đã cho và thêm các số nguyên tố vào danh sách prime_numbers. Sau khi lặp qua tất cả các số, bạn có danh sách các số nguyên tố nhỏ hơn n.

Liệt kê tất cả các số nguyên tố nhỏ hơn n trong Python

Cách 1: Dùng chương trình kiểm tra số nguyên tố
























def is_prime(num):
    if num <= 1:
        return False
    if num <= 3:
        return True
    if num % 2 == 0 or num % 3 == 0:
        return False
    i = 5
    while i * i <= num:
        if num % i == 0 or num % (i + 2) == 0:
            return False
        i += 6
    return True

def list_primes_less_than_n(n):
    prime_list = []
    for i in range(2, n):
        if is_prime(i):
            prime_list.append(i)
    return prime_list

n = int(input("Nhập n: "))
prime_numbers = list_primes_less_than_n(n)
print("Các số nguyên tố nhỏ hơn", n, "là:", prime_numbers)

Trong đoạn mã trên, is_prime là một hàm kiểm tra xem một số có phải là số nguyên tố hay không, và list_primes_less_than_n là hàm liệt kê tất cả các số nguyên tố nhỏ hơn n. Sau đó, bạn nhập giá trị n từ bàn phím và chương trình sẽ in ra danh sách các số nguyên tố nhỏ hơn n.

Cách 2: Dùng Sàng Eratosthenes
















def sieve_eratosthenes(n):
    is_prime = [True] 
 * (n + 1)
    is_prime[0]  = is_prime[1] 


 = False
    
    for p in range(2, int(n**0.5) + 1):
        if is_prime[p] 

:
            for i in range(p * p, n + 1, p):
                is_prime[i] 

 = False
                
    prime_numbers = [i for i in range(2, n + 1) if is_prime[i] 




]
    return prime_numbers

n = int(input("Nhập n: "))
prime_numbers = sieve_eratosthenes(n)
print("Các số nguyên tố nhỏ hơn", n, "là:", prime_numbers)

Liệt kê tất cả các số nguyên tố nhỏ hơn n trong C++
















































#include <iostream>
#include <vector>

using namespace std;

bool isPrime(int num) {
    if (num <= 1) {
        return false;
    }
    if (num <= 3) {
        return true;
    }
    if (num % 2 == 0 || num % 3 == 0) {
        return false;
    }
    for (int i = 5; i * i <= num; i += 6) {
        if (num % i == 0 || num % (i + 2) == 0) {
            return false;
        }
    }
    return true;
}

vector<int> listPrimesLessThanN(int n) {
    vector<int> primeList;
    for (int i = 2; i < n; ++i) {
        if (isPrime(i)) {
            primeList.push_back(i);
        }
    }
    return primeList;
}

int main() {
    int n;
    cout << "Nhap n: ";
    cin >> n;
    
    vector<int> primeNumbers = listPrimesLessThanN(n);
    
    cout << "Cac so nguyen to nho hon " << n << " la:";
    for (int prime : primeNumbers) {
        cout << " " << prime;
    }
    
    cout << endl;
    return 0;
}

 

Read:   Tính S(n) = 1^2 + 2^2 + … + n^2 - Minh họa trong C++ và Python
Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *