2017-04-25 57 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(或只返回)。