C编程 - 素数检查

时间:2018-03-28 18:12:31

标签: c

我是C编程的新手,我想知道,为什么我的代码在输入数为素数的情况下要执行chceck。 这是代码:

#include <stdio.h>

bool prime(int);

int main()
{
    int x;
    x = getchar();
    if (x < 2)
        printf("its not prime\n");
    else
    {
        if (prime(x))
            printf("its prime\n");
        else
            printf("its not prime\n");
    }
    return 0;
}

bool prime(int x)
{
    for (int i = 2; i*i <= x; i++)
        if (x%i == 0)
        {
            return false;
            break;
        }
        else
            return true;
}

我不知道自己做得不好:/你能帮我吗? 提前致谢! :)

1 个答案:

答案 0 :(得分:1)

您的代码不起作用,因为x=getchar()只接受一个字符,让您输入2,然后x的值将为50而50则不是素数数字,因此您将获得结果not prime(但您期望'prime)原因是当您键入2时,它会将其ascii值分配给x,因为x是{{1}并且您正在提供int。(并且要char运行,您必须在代码中加入bool

素数检查的正确代码是

stdbool.h