2017-01-19 116 views
-4

我寫了一個小程序來檢查我的號碼是不是一個素數。 我認爲代碼工作正常,但我希望代碼給我一個單一的輸出:如果它是一個素數或不。C減少輸出

我試圖在Google上找到它,但找不到答案。

#include <stdio.h> 
#include <stdlib.h> 
#include <stdbool.h> 

int main() 
{ 
int z1,z_eingabe; 
bool b1=true; 

while(1){ 


printf("Zahl : "); 
scanf("%d",&z_eingabe); 

for(z1=2;z1<z_eingabe;z1++){ 
    if(z_eingabe%z1==0){ 
     printf("False %d\n",z1); 
     b1=false; 
     break; 
    } 
    if(b1==true){ 
     if(z_eingabe%z1!=0){ 
      printf("True\n"); 
      break; 
     } 
    } 
} 

} 

    return 0; 
} 
+0

聽說過子程序?還是標誌?兩者都很簡單。 –

+0

有很多關於尋找素數的代碼,有一些研究可以幫助你。即使算法是「第一次嘗試」,例如,唯一的偶數素數是「2」。沒有其他具有偶數除數的數字是素數。 –

+1

'fflush(stdin);'。別。 –

回答

0

否,代碼不正常工作。
輸入作爲輸入的數字9,8,9,並且程序將報告
Zahl:9

Zahl:8
假2
Zahl:9
假3
Zahl:

爲了改進,您應該爲while循環的每次迭代初始化b1布爾值爲true(並且如果您希望程序只檢查一個數字,請刪除while循環)。

,然後做檢查

if(z_eingabe%z1==0) 

爲Z1的所有值斷定你有一個素數之前。

以下是更正代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <stdbool.h> 

int main() 
{ 
int z1,z_eingabe; 
bool b1; 

while(1){ 
b1=true; 


printf("Zahl : "); 
scanf("%d",&z_eingabe); 

for(z1=2;z1<z_eingabe;z1++){ 
    if(z_eingabe%z1==0){ 
     printf("False %d\n",z1); 
     b1=false; 
     break; 
    } 
} 
if(b1==true){ 
     printf("True\n"); 
} 

} 

    return 0; 
} 
1

使用布爾值並將其設置爲true

當您找到一個代表輸入的數字時,將值設置爲falsebreak循環。

末測試布爾:true -> printf("Ja\n"); false -> printf("Nein\n");

+0

你的意思是我用stdbool.h lib的布爾值? bool b1 = true,b2 = false;喜歡這個? – MAXLooW

0

如果你想要一個算法,如果你想查詢一個號碼是首要你必須素數高達這個數字的平方根,如果它不將其分攤可被他們整除的數字是素數。

對於N,1間質數除以它的sqrt(N)檢查其餘所有這些部門不爲0,如果有人來零它不是別的主要的黃金