//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/KGn9ob8on
#include <iostream>
#include <array>
constexpr bool isPrime(int n) { // zur Übersetzungszeit berechenbar
if(n < 2) return false; // 0, 1 sind nicht prim
for (int i = 2; i*i <= n; i += i>2 ? 2 : 1) { // 2,3,5,7,9,11,13,15…
if (n % i == 0) return false;
}
return n > 1; // für 0 und 1
}
template<int Num>
consteval std::array<int, Num> primeNumbers() { // nur zur Übersetzungszeit
std::array<int, Num> primes{};
int idx = 0;
for (int val = 1; idx < Num; ++val) {
if (isPrime(val)) primes[idx++] = val;
}
return primes;
}
int main() {
// Initialisiere mit Primzahlen
auto primes = primeNumbers<100>(); // 1000000 geht nicht
for (auto v : primes) {
std::cout << v << ' ';
}
std::cout << '\n';
}