富贵要加油 发表于 2020-11-13 19:25:02

求助大佬

【问题描述】编写素数判断函数int prime(int n)n为素数返回1、否则返回0,并通过调用该函数编程验证歌德巴赫猜想:任何大于2的偶数均可表示为两个素数之和。例如:4=2+2,6=3+3,8=3+5,…,试验证之间的偶数,每个偶数只需找到一组和式即可,其中n从键盘输入。
【输入形式】输入正整数n。
【输出形式】输出每个偶数的组合(每个数只要显示一对)。
#include<stdio.h>
#include<math.h>
int prime(int m);
void main()
{
        int n,a,m;
        scanf("%d",&n);
        for(a=n;a<=(n+10);a++)
    {
       if(prime(m))               
       {
       printf("%d=%d+%d\n",a,m,a-m);
       }
        }
}

int prime(int m)
{
    int i;
    if(m<2)
    return 0;
        for(i=2;i<=sqrt(m);i++)
        if(m%i==0)
        {
        return 0;
        }
        return 1;
}

请问这样写为什么是错的,谢谢纠正{:5_108:}

xieglt 发表于 2020-11-13 20:02:29


void main()
{
      int n,a,m;
      scanf("%d",&n);
      for(a=n;a<=(n+10);a++)
    {
         if(a%2!=0) continue;
          for(m=2;m<=a/2;m++)
         if(prime(m)&&prime(a-m))               
         {
         printf("%d=%d+%d\n",a,m,a-m);
          break;
         }
      }
}
页: [1]
查看完整版本: 求助大佬