C++ :: Aufgabe #339 :: Lösung #1

1 Lösung Lösung öffentlich
#339

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ß!
#1
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;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1818063

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.