C++ :: Aufgabe #339

1 Lösung Lösung öffentlich

Palindromische Primzahlen

Anfänger - C++ von hollst - 29.03.2021 um 21:12 Uhr
Man erzeuge eine Liste aller Primzahle <= 1 Milliarde (1E+9), die in dezimaler Präsentation umgekehrt gelesen ebenfalls eine Primzahl sind (Palindromische Primzahlen). Z. B. 13; 31 ist ebenfalls Primzahl.

Viel Spaß!

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 31.03.2021 um 10:40 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <vector>
#include <tuple>
using namespace std;

bool is_prime(int n) {
    if (n == 0 || n == 1) return false;
    if (n == 2) return true;
    for (int i = 2; i <= (int)ceil(sqrt(n)); i++)
        if (n % i == 0) return false;
    return true;
}

int get_rev_num(int num)
{
    auto rev = 0;
    while (num != 0)
    {
        rev *= 10;
        rev += (num % 10);
        num /= 10;
    }
    return rev;
}

vector<tuple<int, int>> get_prime_list(int max) {
    vector<tuple<int, int>> v;
    for (auto i = 10; i <= max; i++)
    {
        if (is_prime(i)) {
            auto pr = get_rev_num(i);
            if (is_prime(pr))
                v.push_back(make_tuple(i, pr));
        }
    }
    return v;
}

int main()
{
    for (const auto &i : get_prime_list(1000))
        cout << get<0>(i) << ", " << get<1>(i) << endl;
}
1812982

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.