Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中定义main()前后的函数?_C - Fatal编程技术网

在C中定义main()前后的函数?

在C中定义main()前后的函数?,c,C,这是C代码,用于查找包含2个因子和3个因子的数字。当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果。但无论何时,只要我们把素数函数放在main之后,它就会给出正确的结果 当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果 isprimeint num在功能上是错误的 为了;i如果在调用函数之前先声明原型int isprimeint num,然后再调用它,会发生什么情况?@Anshul Raj显示结果的差异。你确定在调用函数之前得到的结果是错误的吗?这

这是C代码,用于查找包含2个因子和3个因子的数字。当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果。但无论何时,只要我们把素数函数放在main之后,它就会给出正确的结果

当我们把素数函数放在main之前时,我遇到了一个问题,它给出了错误的结果

isprimeint num在功能上是错误的


为了;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()
  ....