Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

In tất cả số nguyên tố an toàn (safe primes) nhỏ hơn N trong C++


Cho số nguyên N, in tất cả số nguyên tố an toàn nhỏ hơn N.

Số nguyên tố an toàn là số nguyên tố có dạng (2*p) + 1, trong đó p cũng là số nguyên tố.

Ví dụ: 5 [(2*2)+1], 7 [(2*3)+1].

Ví dụ bài toán:

Input: N = 12 Output: 5 7 11

Giải pháp: Tìm tất cả số nguyên tố < N (sàng Eratosthenes). Kiểm tra từng số nguyên tố có phải safe prime không.

Chương trình minh họa

#include <bits/stdc++.h>
using namespace std;
void printPrime(int n){
    cout << n << "\t";
}
void generateSafePrimes(int n){
    int prime[n + 1];
    for (int i = 2; i <= n; i++)
        prime[i] = 1;
    prime[0] = prime[1] = 0;
    for (int p = 2; p * p <= n; p++) {
        if (prime[p] == 1) {
            for (int i = p * 2; i <= n; i += p)
                prime[i] = 0;
        }
    }
    for (int i = 2; i <= n; i++) {
        if (prime[i] != 0) {
            int temp = (2 * i) + 1;
            if (temp <= n && prime[temp] != 0)
                prime[temp] = 2;
        }
    }
    for (int i = 5; i <= n; i++)
        if (prime[i] == 2)
            printPrime(i);
}
int main(){
    int n = 34;
    cout << "Các số nguyên tố an toàn < " << n << " là :\n";
    generateSafePrimes(n);
    return 0;
}

Kết quả

Các số nguyên tố an toàn < 34 là:

5 7 11 23