告诉数字是否为素数的程序

时间:2015-11-09 22:06:11

标签: c if-statement scanf primes

您输入一个数字,程序将查找数字是否为素数 所以当我第一次输入数字7时,它会显示'数字是素数' 然后我输入8,它会显示'数字不是素数' 之后我重新输入数字7,它会显示'数字不是素数' 我不知道问题出在哪里 请帮我 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;
}

2 个答案:

答案 0 :(得分:2)

每次用户输入数字时,您需要将isPrime设置为0。否则,它仍保留前一个数字的值。

移动变量声明

int isPrime = 0;

while循环内。

顺便说一句,这个变量名不倒退吗?当您发现有一个数字将其平均分配时,您将其设置为1(即true)。但是当数字时,那就是

答案 1 :(得分:0)

您忘记在“while”循环内将isPrime重置为零。

按照他们的方式,看起来你正在做这个学习练习。这很好,没有比学习更好的方法了。

这是C中的提示,任何非零值都被视为“true”,零被视为“false”。所以不要这样:

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

请写下:

if (myFlag) { ... do something }