2017-04-25 1 views
-3

nombres premiers Je veux que tous PRIMES et le travail programm mais je reçois un avertissement: avertissement
: contrôle atteint la fin de la fonction non vide [type -Wreturn] }comment calculer

Je maintenant que je besoin d'un dernier retour dans bool isprim mais je ne l'obtenir

bool isPrim(int prim,int tester){ 
if(prim <=1){ 
    return 0; 
}else if(tester==1){ 
    return 1; 
}else if (tester>=1&&(prim % tester)!=0){ 
    isPrim(prim,tester-1); 

}else if ((prim % tester)==0){ 
    return 0; 
} 
} 


int main(){ 
int eingabe; 
int zaehler=1; 
printf("Bitte Zahl zum testen eingeben\n"); 
scanf("%i",&eingabe); 

if (isPrim(eingabe,eingabe-1)){ 
    printf("Ihre Zahl ist eine Primzahl\n"); 
}else{ 
    printf("Ihre Zahl ist keine Primzahl\n"); 
} 
//show me all Primes <1000 
printf("Nun werden alle Primzahlen bis 10000 ausgegeben\n\n"); 
while(zaehler<=10000){ 
    if(isPrim(zaehler,zaehler-1)){ 
     printf("%i\t",zaehler); 
    } 

zaehler++; 
} 

return 0; 
} 
+0

Je pense qu'il vous manque une instruction de retour 'return isPrim (prim, tester-1);' – destoryer

+0

non j'obtiens l'avertissement – niko

+0

Vous devez marquer la langue dans laquelle vous travaillez pour que la question soit visible aux personnes concernées . Il est possible que votre langage ne convertisse pas implicitement les entiers en booléens, donc vous devriez changer '1's en' true's et '0' 'false's. – destoryer

Répondre

0

Vous ne devez pas avoir des branches qui pourraient ne pas retourner un booléen, même si elles neve r être exécuté:

// This will throw a warning. 
bool func(){ 
    if(true){ 
    return 0; 
    } 
} 

Modifiez la dernière else if à un else, ou ajouter un else supplémentaire (ou tout simplement revenir) à la fin.