C 如果我的输入是3,它说它不是素数
这个代码有什么问题,它说数字3不是素数 数字3是素数,那么这有什么问题 如果我把数字2作为输入,那么它也是错误的C 如果我的输入是3,它说它不是素数,c,C,这个代码有什么问题,它说数字3不是素数 数字3是素数,那么这有什么问题 如果我把数字2作为输入,那么它也是错误的 this find out whether the given number is prime or not 您的for循环应更改为 fori=2;在这一行中,int num,i,j,inum,flag=0;您需要执行int num、i、j、inum、flag=1;。好的,现在想想这个变化会发生什么。我认为现在您的代码不会给出错误的输出 更新:试想如果在sqrtN范围内没有能够除以
this find out whether the given number is prime or not
您的for循环应更改为 fori=2;在这一行中,int num,i,j,inum,flag=0;您需要执行int num、i、j、inum、flag=1;。好的,现在想想这个变化会发生什么。我认为现在您的代码不会给出错误的输出
更新:试想如果在sqrtN范围内没有能够除以N的数字,其中N%thatNumber==0,那么它就是一个素数。所以标志应该是1个原因,最初的时候我认为它是素数。如果它不是素数,那么在范围sqrtN中有一个数字,它可以除以N,其中N%thatNumber==0,因此,标志更改为0 调试器说什么?您是否单步执行了代码?如果不是:这是学习使用调试器的好时机。如果num的平方根的整数部分小于或等于2,则for循环永远不会运行。。。在这种情况下,flag是什么?inum=sqrt2;->伊努姆是1。inum=sqrt3;->inum是1。@Akshay:与其问这个问题,你应该是那个试图找出代码错误的人。那么只有你才能学习。回答您,sqrt3是1,因此循环永远不会运行。所以根据你的代码逻辑,3并不乐意帮助@Akshay
#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);
}
}
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");