this find out whether the given number is prime or not
这段代码有什么不对,它说数字3不是素数 数字3是素数然后是错误的 如果我把数字2作为输入,那么也是错误的
#include<stdio.h>
#include<math.h>
void main()
{
int num,i,j,inum,flag=0;
printf("\n Enter the number :");
scanf("%d",&num);
inum=sqrt(num);
for(i=2;i<inum;i++)
{
if(num%i==0)
{
flag=0;
break;
}
else
{
flag=1;
}
}
if(flag)
{
printf("\n TThe number %d is prime",num);
}
else
{
printf("\n The number %d is not prime",num);
}
}
答案 0 :(得分:2)
你的for循环应该改为
for(i=2;i<=inum;i++)
更清洁,更好的代码。
bool found = true;
for (i=2; i<=inum && found; ++i ) {
if ( num%i == 0 ) found = false;
}
if ( found ) printf("Prime Number");
else printf("Not Prime");
答案 1 :(得分:0)
在此行int num,i,j,inum,flag=0;
中,您需要执行int num,i,j,inum,flag=1;
。好了,现在想想这个变化会发生什么。我认为现在你的代码没有给出错误的输出。
更新:只要想一想sqrt(N)
范围内没有能够将N
划分为(N % thatNumber == 0)
的数字,那么它就是素数。因此旗帜应该是1个原因,我认为它的初始时间是一个素数。如果它不是素数,那么sqrt(N)
范围内的数字可以将N
除以(N % thatNumber == 0)
,并且此原因标志更改为0.