【发布时间】:2019-10-02 11:14:33
【问题描述】:
这段代码有什么问题?请帮助我 我正在输入 9 它说这个数字是素数 并且输出实际上与条件相反......如何?
#include <stdio.h>
#include <conio.h>
int prime(int);
int main()
{
int num,res;
printf("\nENTER A NUMBER: ");
scanf("%d",&num);
res=prime(num);
if(num==1)
{
printf("Neither Prime nor Composite\n");
}
else
{
if(res==0)
printf("\n%d IS A PRIME NUMBER",num);
else
printf("\n%d IS NOT A PRIME NUMBER",num);
}
getch();
}
int prime(int n)
{
int i,p;
for(i=2;i<=n/2;i++)
{
if(n%i==0){
p=0;
} else {
p=1;
}
return p;
}
}
【问题讨论】:
-
当你发现数字不是质数时,你应该打破循环
-
提示:在调用
prime之前,您应该检查if(num==1)。 -
请一致地缩进您的代码。奇怪的、可变的缩进和大括号放置使其难以阅读。
-
@samini,实际上,他们过于频繁地打破循环 :) 当代码正确缩进时,这一点变得很明显,这就是这样做如此重要的原因。
-
为什么是
i<=n/2?如果输入 n = 23,它永远不会评估它?
标签: c function primes definition