2017-04-25 37 views
-3

我希望所有素數和PROGRAMM工作,但我得到一個警告:
警告:控制到達非void函數結束[-Wreturn型] }如何計算素數

我現在,我需要在布爾isprim最後的回報,但我不明白

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

我想你錯過了一個返回語句'return isPrim(prim,tester-1);' – destoryer

+0

nope我得到了警告 – niko

+0

你應該標記你正在工作的語言以便讓相關人員看到問題。有可能你的語言不會將整數隱式轉換爲布爾值,所以你應該把'1's改爲'true's和'0's‖爲'false's。 – destoryer

回答

0

你不能有一個可能不會返回一個布爾任何分支機構,即使他們將NEVE r參數執行:

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

要麼改變最後else ifelse,或在結尾處添加一個額外的else(或只返回)。