Immer wenn ich versuche, den folgenden Code zu kompilieren, kann ich den Anfangswert eingeben, nach dem ich frage, aber dann passiert nichts. Außerdem gibt es keinen Build-Fehler, der aufgenommen wird, also weiß ich nicht, warum das passiert. Bitte helfen Sie und danken Sie im Voraus.Kompilieren meines einfachen C-Codes
#include <stdio.h>
#include <stdbool.h>
int n;
int allDaPrimes[1000];
int counter = 0;
bool isPrime(int number);
int i;
int main()
{
printf("Please enter a numeric value now: ");
scanf("%d", &n);
for (i = 2; i <n; i++){
isPrime(i);
if(isPrime(i)) {
allDaPrimes[counter] = i;
counter++;
}
}
for(i= 0; i==counter; i++){
printf("%d", allDaPrimes[i]);
}
return 0;
}
bool isPrime(int number) {
for (i= 2; i <= number; i++){
if(number % i == 0 && number != i){
return false;
}
}
return true;
}
Ich nehme an, das liegt daran, dass Ihre 'isPrime'-Funktion eine schreckliche Komplexität hat, also läuft sie für immer. Versuchen Sie, auf 'int (sqrt (number) +0.5)' zu beschränken, Sie werden die gleichen Ergebnisse haben, viel schneller. Hinweis: Sie rufen es zweimal in Ihrer Schleife an; es noch schlimmer machen. –
Wenn es bis zu dem Punkt läuft, an dem Sie einen Wert eingeben können, handelt es sich nicht um ein * compiling * -Problem, weil Ihr Code kompiliert, verknüpft und ausgeführt wurde. Jetzt ist es ein * Debugging-Problem, und Sie verwenden einen Debugger, um durch den Code zu gehen. –
Verwenden Sie stattdessen einen Siebalgorithmus. (Nachsieb von Erathostenen) –