快乐打码 2023-01-17 16:17 采纳率: 71.4%
浏览 34
已结题

请问我这样写有什么问题要怎么改才对

任务描述
输入两个大于6的正偶数a和b(a<b),输出二者之间所有数的哥德巴赫猜想的验证过程,每个数的验证过程只输出第一个算式(第1个加数最小)即可。

[科普] 哥德巴赫猜想是数论中存在最久的未解问题之一。这个猜想最早出现在1742年普鲁士人克里斯蒂安•哥德巴赫与瑞士数学家莱昂哈德•欧拉的通信中。用现代的数学语言,哥德巴赫猜想可以表述为:“任何一个充分大的偶数(>6)都可以表示成两个奇素数的和的形式”。

输入样例:
10 16
输出样例:
10=3+7
12=5+7
14=3+11
16=3+13

#include<stdio.h>
#include<math.h>
int f(int a,int b)
{
    for(int i=a;i<=b;i++)
        {
        for(int j=0;j<=sqrt(i);j++){
            if(j%i==0)
                return 0;
        }
        return 1;
        }
}
int main()
{
    int a,b;
   scanf("%d%d",&a,&b);
    for(int j=a;j<=b;j++){
    for(int i=3;i<=j/2;i++)
    {
        if(f(j)==1&&f(j-i)==1&&i!=j-i)
            printf("%d=%d+%d\n",j,i,j-i);
    }
    }
    
}

  • 写回答

4条回答 默认 最新

  • 元气少女缘结神 2023-01-17 16:24
    关注

    函数f需要两个参数,你f(j) 只给它传一个参数?而且直接下面这样看着更清爽:

    #include<stdio.h>
    #include<math.h>
    
    
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
    
        for(int j=a;j<=b;j+=2)
        {
            for(int i=3;i<a;i+=2)
            {
                int sub=j-i;
    
                if(sub %2 !=0)
                {
                    if(sub % i==0)
                        continue;
                    printf("%d=%d+%d\n",j,i,sub);
                    break;
                }
            }
        }
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值