Ich arbeite mich durch das Buch C++ - Programmierung Prinzipien und Praxis. In dem Buch gibt es eine Übung, Primzahlen zu finden, indem man eine Zahl mit Zahlen vergleicht, die als Primzahlen identifiziert wurden. Dies ist die Funktion, die ich geschrieben habe, um dieses Problem zu lösen.Übung mit C++ - Funktion zur Identifizierung von Primzahlen mit! =
vector <int> primes;
int findprime (int x) {
for (int p=0; p<primes.size(); ++p) {
if (x%primes[p]!=0) {
return x;
}
}
}
int main() {
primes.push_back(2);
for (int i=3; i<100; ++i) {
primes.push_back(findprime(i));
}
for (int i=0; i<primes.size(); ++i) {
cout << primes[i] << '\n';
}
}
Die Autoren Funktion in seiner Lösung ist:
bool is_prime(int n) {
for (int p = 0; p<prime.size(); ++p)
if (n%prime[p]==0) return false; // no remainder: prime[p] divided
return true; // no smaller prime could divide
}
Mein Code funktioniert nicht, aber ich verstehe nicht wirklich, warum. Ich glaube, mir fehlt etwas Wissen darüber, wie die Funktionen genau funktionieren. Ich würde es wirklich schätzen, wenn jemand den Grund erklären würde, warum mein Code nicht funktioniert und meine Lücken ausfülle.
Sie erhalten einen Fehler oder Ergebnisse sind falsch? – denis
Mein Ergebnis ist falsch. Fügt jede Zahl zwischen 1 und 100 in den Vektor ein. Ich denke, was passiert, ist sogar durch Ich habe angegeben, dass die Funktion nur den Wert zurückgibt, wenn es ist! = Es gibt den Wert unabhängig zurück. Ich glaube, ich habe ein kleines Missverständnis darüber, wie die Funktionen funktionieren und hoffe, dass jemand mit Erfahrung erklären kann. – TrustNo1UK