#include <iostream>
bool isPrime(unsigned n)
{
if(n < 2) // zahlen < 2 sind keine primzahlen
return false;
for(unsigned i = 2; i * i <= n; ++i) // fuer alle zahlen 2, 3, ..., wurzel(n) - 1, wurzel(n) ...
if(n % i == 0) // ... wenn n durch i teilbar ist, ...
return false; // ... dann haben wir keine primzahl
return true; // wenn n durch keine der zahlen teilbar ist, dann haben wir eine primzahl gefunden
}
int main()
{
std::cout << "Wie viele Primzahlen?\n";
unsigned numberOfPrimes;
std::cin >> numberOfPrimes;
// count zaehlt die anzahl der primzahlen, die wir schon gefunden haben
// n zaehlt einfach der reihe nach solange zahlen hoch, bis wir fertig sind
for(unsigned count = 0, n = 0; count != numberOfPrimes; ++n) // solange wir noch nicht genug primzahlen haben ...
if(isPrime(n)) // ... wenn die aktuelle zahl eine primzahl ist ...
{
std::cout << n << ' '; // ... dann gib die zahl aus ...
++count; // ... und erhoehe die anzahl gefundener primzahlen um 1
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKYm9vbCBpc1ByaW1lKHVuc2lnbmVkIG4pCnsKCWlmKG4gPCAyKSAvLyB6YWhsZW4gPCAyIHNpbmQga2VpbmUgcHJpbXphaGxlbgoJCXJldHVybiBmYWxzZTsKCglmb3IodW5zaWduZWQgaSA9IDI7IGkgKiBpIDw9IG47ICsraSkgLy8gZnVlciBhbGxlIHphaGxlbiAyLCAzLCAuLi4sIHd1cnplbChuKSAtIDEsIHd1cnplbChuKSAuLi4KCQlpZihuICUgaSA9PSAwKSAvLyAuLi4gd2VubiBuIGR1cmNoIGkgdGVpbGJhciBpc3QsIC4uLgoJCQlyZXR1cm4gZmFsc2U7IC8vIC4uLiBkYW5uIGhhYmVuIHdpciBrZWluZSBwcmltemFobAoKCXJldHVybiB0cnVlOyAvLyB3ZW5uIG4gZHVyY2gga2VpbmUgZGVyIHphaGxlbiB0ZWlsYmFyIGlzdCwgZGFubiBoYWJlbiB3aXIgZWluZSBwcmltemFobCBnZWZ1bmRlbgp9CgppbnQgbWFpbigpCnsKCXN0ZDo6Y291dCA8PCAiV2llIHZpZWxlIFByaW16YWhsZW4/XG4iOwoKCXVuc2lnbmVkIG51bWJlck9mUHJpbWVzOwoJc3RkOjpjaW4gPj4gbnVtYmVyT2ZQcmltZXM7CgoJLy8gY291bnQgemFlaGx0IGRpZSBhbnphaGwgZGVyIHByaW16YWhsZW4sIGRpZSB3aXIgc2Nob24gZ2VmdW5kZW4gaGFiZW4KCS8vIG4gemFlaGx0IGVpbmZhY2ggZGVyIHJlaWhlIG5hY2ggc29sYW5nZSB6YWhsZW4gaG9jaCwgYmlzIHdpciBmZXJ0aWcgc2luZAoJZm9yKHVuc2lnbmVkIGNvdW50ID0gMCwgbiA9IDA7IGNvdW50ICE9IG51bWJlck9mUHJpbWVzOyArK24pIC8vIHNvbGFuZ2Ugd2lyIG5vY2ggbmljaHQgZ2VudWcgcHJpbXphaGxlbiBoYWJlbiAuLi4KCQlpZihpc1ByaW1lKG4pKSAvLyAuLi4gd2VubiBkaWUgYWt0dWVsbGUgemFobCBlaW5lIHByaW16YWhsIGlzdCAuLi4KCQl7CgkJCXN0ZDo6Y291dCA8PCBuIDw8ICcgJzsgLy8gLi4uIGRhbm4gZ2liIGRpZSB6YWhsIGF1cyAuLi4KCQkJKytjb3VudDsgLy8gLi4uIHVuZCBlcmhvZWhlIGRpZSBhbnphaGwgZ2VmdW5kZW5lciBwcmltemFobGVuIHVtIDEKCQl9Cn0=