2017-01-19 5 views
-4

私の番号が素数かどうかを調べる小さなプログラムを書いた。 私はコードがうまく動作すると思いますが、コードが私に単一の出力を与えるようにしたい:それが素数であるかどうか。C reduce output

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

Zahl:8
偽Zahl:9
偽3
Zahl:


は、入力として数字9、8、9、およびプログラムが
Zahlを報告しますを入力します。

改善のために、whileループの繰り返しごとにb1ブール値をtrueに初期化する必要があります(プログラムで1つの数値だけをチェックする場合はwhileループを削除してください)。

そして、あなたは素数を持っていると結論する前にZ1の全ての値について

if(z_eingabe%z1==0) 

チェックを行います。ここで

修正されたコードです:

#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ライブラリでブール値を使用していますか? bool b1 = true、b2 = false;このような? – MAXLooW

0

あなたは、アルゴリズムをしたい場合は、番号を確認したい場合、あなたはその数の平方根件までとされていない場合素数でそれを分割する必要が素数でありますそれらによって割り切れる数は素数です。これらすべての部門の余りが0でない場合は、誰がゼロになればNのために

、SQRTに1間の素数で割っ(N)をチェックし、そのほかの素数でないそのプライム