xiaoyan231 2021-10-27 07:31 采纳率: 80%
浏览 52
已结题

如何输入若干个任意数,用最简单的方法,好多内容还没学

哥德巴赫猜想
成绩: 5 / 折扣: 0.8
题面描述:
如图所示:魔法学院的图书馆珍藏着一份1742年德国中学教师哥德巴赫写给大数学家欧拉的珍贵手稿,这就是世界近代三大数学难题之哥德巴赫猜想。即任何一个大于 6的偶数都可以表示成两个素数之和;任何一个大于9的奇数都可以表示成三个素数之和。 1966年,中国数学家陈景润证明了“任何一个充分大的偶数都可以表示成一个素数与另一个素因子不超过2个的数之和”,简称“1+2”。
试验证2000以内的正偶数都能够分解为两个素数之和(即验证哥德巴赫猜想对2000以内的正偶数成立)。

输入:
若干个2001以内的正偶数,如上所述。

输出:
标准输出,输出所给正偶数的素数之和,每个占一行,如4=2+2。如果有多种可能,只输出一种,即第一个素数最小的。

示例输入:
4
6
8

示例输出:
4=2+2
6=3+3
8=3+5

测试用例 1 以文本方式显示
422↵
1932↵
1182↵
86↵
1880↵
以文本方式显示
422=3+419↵
1932=19+1913↵
1182=11+1171↵
86=3+83↵
1880=3+1877↵
1秒 无限制 0

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-10-27 09:12
    关注

    供参考:

    #include <stdio.h>
    int  isPrime(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;
    }
    int main()
    {
        int i, n;
        while (scanf("%d", &n) == 1 && n <= 2000 && n > 0)
        {
            for (i = 2; i <= n / 2; i++) {
                if (isPrime(i) && isPrime(n - i)) 
                {
                    printf("%-d=%-d+%-d\n", n, i, n - i);//输出
                    break;
                }
            }
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月27日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆