我是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;
}
我不知道自己做得不好:/你能帮我吗? 提前致谢! :)
答案 0 :(得分:1)
您的代码不起作用,因为x=getchar()
只接受一个字符,让您输入2
,然后x
的值将为50
而50则不是素数数字,因此您将获得结果not prime
(但您期望'prime
)原因是当您键入2
时,它会将其ascii值分配给x,因为x是{{1}并且您正在提供int
。(并且要char
运行,您必须在代码中加入bool
素数检查的正确代码是
stdbool.h