C++ :: Aufgabe #339
1 Lösung
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ß!
Viel Spaß!
Lösungen:
C++ 17
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;
}
