gpt4 book ai didi

C 编程 - 质数检查

转载 作者:行者123 更新时间:2023-11-30 14:49:32 25 4
gpt4 key购买 nike

我是 C 编程新手,我想知道为什么我的代码的工作是检查输入数字是否为素数。代码如下:

#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;
}

我不知道我做错了什么:/你能帮我吗?提前致谢! :)

最佳答案

您的代码不起作用,因为 x=getchar() 只接受一个字符,让您输入 2,然后输入 x 的值> 将是 50 并且 50 不是素数,所以你会得到结果 不是素数(但你期望'素数),原因是当您输入 2 时,它会将其 ascii 值分配给 x,因为 x 是 int 并且您给出 char。(对于 bool 要运行,您必须在代码中包含 stdbool.h)

质数检查的正确代码是

#include <stdio.h>
#include <stdbool.h>
bool prime(int);

int main()
{
int x;
scanf("%d",&x);
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)
{
int i;
for (i = 2; i*i <= x; i++){
if (x%i == 0)
return false;
}
return true;
}

关于C 编程 - 质数检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com