簡體   English   中英

判斷一個數是否為素數的程序

[英]program that tells if a number is prime

你輸入一個數字,程序會發現這個數字是否是素數,所以當我第一次輸入數字 7 時,它會顯示“這個數字是素數”,然后我輸入 8,它會顯示“這個數字是素數”不是素數”之后我重新輸入數字 7,它會顯示“數字不是素數”我不知道問題出在哪里請幫我從這里獲取示例照片,我的代碼是:

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

int main (void){
int n;
int t;
int isPrime=0;
char var;

while(var!='q'){
    printf("q=quit  p=prime  :");
    fflush(stdin);
    scanf("%c",&var);
    if(var=='p'){
        printf("plz put the number value :");
        scanf(" %d",&n);
        for(t=2;t<=n/2;t++){
            if (n%t==0){
                isPrime=1;
                break;
            }
        }
        if(isPrime==0){
            printf("%d is a prime number\n",n);
        }
        else{
            printf("%d is not a prime number\n",n);
        }
    }
    else if(var=='q'){
        printf("thank you bye\n");
        break;
    }
    else{
        printf("a wrong letter\n");
    }
}
return 0;
}

每次用戶輸入數字時,您都需要將isPrime設置為0 否則,它仍然保留前一個數字的值。

移動變量聲明

int isPrime = 0;

while循環內。

順便說一句,那個變量名是不是倒過來了? 當您發現有一個數字可以等分它時,您將其設置為1 (即true )。 但那是數字不是質數的時候。

您忘記在“while”循環內將 isPrime 重置為零。

順便說一句,看起來您正在將其作為學習練習。 這很好,沒有比嘗試新事物更好的學習方法了。

這是 C 中的一個提示,任何非零值都被視為“真”,零被視為“假”。 所以而不是這個:

if (myFlag==1) { ... do something }

只寫這個:

if (myFlag) { ... do something }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM