在C中定义main()前后的函数?
这是C代码,用于查找包含2个因子和3个因子的数字。当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果。但无论何时,只要我们把素数函数放在main之后,它就会给出正确的结果 当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果 isprimeint num在功能上是错误的在C中定义main()前后的函数?,c,C,这是C代码,用于查找包含2个因子和3个因子的数字。当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果。但无论何时,只要我们把素数函数放在main之后,它就会给出正确的结果 当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果 isprimeint num在功能上是错误的 为了;i如果在调用函数之前先声明原型int isprimeint num,然后再调用它,会发生什么情况?@Anshul Raj显示结果的差异。你确定在调用函数之前得到的结果是错误的吗?这
为了;i如果在调用函数之前先声明原型int isprimeint num,然后再调用它,会发生什么情况?@Anshul Raj显示结果的差异。你确定在调用函数之前得到的结果是错误的吗?这实际上是一种正确的方法,另一种是在那里有一个原型。因此,问题必须非常微妙……Sqrt可能不精确,最好在其中添加1,以确保不会对平方素数进行错误分类!将整数与浮点值进行比较是有风险的,您可以在这里这样做
#include<stdio.h>
#include<math.h>
int main()
{
int n,x,m,i;
int sqroot,prime;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&m);
if(isprime(m))
printf("NO\n");
else if(isprime(sqrt(m)))
printf("NO\n");
else
printf("YES\n");
}
}
int isprime(int num)
{
int i=2,flag=1;
for(;i<sqrt(num);i++)
{
if(num%i==0)
{
flag=0;
break;
}
}
return flag;
}
int isprime(int num) {
if (num <= 3) { // Handle negatives,0,1,2,3
return num >= 2; // Only 2,3 are prime
}
int i;
for (i = 3; i <= num/i; i += 2) {
if (num%i == 0) {
return 0;
}
}
return 1;
}
int isprime(int num);
int main()
....