判断一个数是否为质数的程序

program that tells if a number is prime

你输入一个数字,程序会判断这个数字是否是素数 所以当我第一次输入数字 7 时,它会显示 'the number is prime' 然后我输入 8 它会显示 'the number is not prime' 之后我 re_enter 数字 7 它会告诉你 'the number is not prime' 我不知道问题出在哪里 请帮我 an example photo from here 我的代码是:

#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 语言的提示,任何非零值都被视为 "true",零被视为 "false"。所以不是这个:

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

就这么写:

if (myFlag) { ... do something }