信子才君 2022-08-02 20:51 采纳率: 100%
浏览 138
已结题

哥德巴赫猜想进阶:就是指任何一个大于2的偶数,都可以写成两个素数的和。现在输入一个偶数,要求寻找两个素数,使其和等于该偶数。由于可能有多组素数对满足条件,所以本题要求输出两数差最小的那两个素数。

1224 哥德巴赫猜想

题目描述

所谓哥德巴赫猜想,就是指任何一个大于2的偶数,都可以写成两个素数的和。现在输入一个偶数,要求寻找两个素数,使其和等于该偶数。由于可能有多组素数对满足条件,所以本题要求输出两数差最小的那两个素数。

输入要求
输入一个偶整数M,M大于2。

输出要求
对于每个偶数,输出两个彼此最接近的素数,并且其和等于该偶数。(输出时两个素数小的在前,大的在后)。

输入样例
20

输出样例
7 13

问题相关代码,请勿粘贴截图
int main()
{
    int m,d,f,i,j,k=0,key,min;
    int sushu(int n);
    scanf("%d",&m);
    for(i=2;i<=m-1;i++)
    {
        for(j=m;j>=2;j--)
        {
            d=sushu(i);
            f=sushu(j);
            if(d&&f&&(i+j==m)&&i<=j)
            {
               // __________________________________________
                //我的思路在这里就没办法进行了
                //到这里可以直接输出多组素数对,但是不知如何输出差最小
            }
        }
    }
    return 0;
}

int sushu(int n)
{
    int i,a=1;
    if(n==2)
        return 1;
    if(n==3)
        return 1;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            a=0;
            break;
        }
    }
    return a;
}

运行结果及报错内容

我的代码能够输出所有满足多组素数对的结果,但是我不知道怎么去求两数差最小的那两个素数对

还有一个问题是,尝试着存储多组数据通过比较输出最小,但是造成运算超时了。

希望有更好的办法解决运算速度的问题!

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-08-02 21:09
    关注

    修改如下,供参考:

    #include <stdio.h>
    int main()
    {
        int m,d,f,i,j,k=0,key,min;
        int sushu(int n);
        scanf("%d",&m);
        for(i = m/2;i > 1 ;i--)
        {
            if(sushu(i) && sushu(m-i)){
               printf("%d %d",i,m-i);
               break;
            }
        }
        return 0;
    }
    
    int sushu(int n)
    {
        int i;
        if(n<=3) return n>1;
        for(i=2;i*i<=n;i++)
           if(n%i == 0) return 0;
        return 1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月11日
  • 已采纳回答 8月3日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了