鱼C论坛

 找回密码
 立即注册
查看: 982|回复: 3

[已解决]哥德巴赫猜想

[复制链接]
发表于 2020-6-14 20:54:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

【输入形式】

    输入大于2的偶数n

【输出形式】

    对每一个偶数4, 6, 8, ..., n,依次输出一行。

    该行内容是<偶数>=<素数1>+<素数2>,要求素数1是能够得到的素数中最小的,并且素数1<=素数2.

【样例输入】

20
【样例输出】

4=2+2

6=3+3

8=3+5

10=3+7

12=5+7

14=3+11

16=3+13

18=5+13

20=3+17


求大佬帮忙解答 感谢
最佳答案
2020-6-14 21:50:17


这样应该可以的吧:

  1. prime = [2]
  2. n = int(input('请输入大于2的偶数:'))
  3. for i1 in range(2,n):
  4.     k = int(i1**0.5)
  5.     for i2 in range(2,k+2):
  6.         if i1%i2 == 0:
  7.             break
  8.     else:
  9.         prime.append(i1)
  10. for each in range(2,n+1,2):
  11.     for i1 in prime:
  12.         for i2 in prime:
  13.             if i1 + i2 == each and i1 <= i2:
  14.                 print(f'{each}={i1}+{i2}')
  15.                 break
  16.         if i1 + i2 == each and i1 <= i2:
  17.             break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-14 21:00:49 | 显示全部楼层
这个比较简单
就 3 个 for 一嵌套 基本 ok
你应该会判断奇数偶数吧~,直接判断枚举出来的这 3 个数字是否符合要求,然后输出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 21:26:58 | 显示全部楼层
  1. #include<iostream>
  2. using namespace std;
  3. int sushu(int x)
  4. {
  5.   if(x<1) return 0;
  6.   if(x==2) return 1;
  7.   for(int i=2;i<=x-1;i++)
  8.     if(x%i==0) return 0;
  9.   return 1;
  10. }
  11. int main()
  12. {
  13.   int i,j,n;
  14.   cin>>n;
  15.   for(i=4;i<=n;i+=2)
  16.   {
  17.     for(j=2;j<i;j++)
  18.       if(sushu(j))
  19.         if(sushu(i-j))
  20.         {
  21.           cout<<i<<"="<<j<<"+"<<i-j;
  22.           break;
  23.         }
  24.   }
  25.   return 0;
  26. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 21:50:17 | 显示全部楼层    本楼为最佳答案   


这样应该可以的吧:

  1. prime = [2]
  2. n = int(input('请输入大于2的偶数:'))
  3. for i1 in range(2,n):
  4.     k = int(i1**0.5)
  5.     for i2 in range(2,k+2):
  6.         if i1%i2 == 0:
  7.             break
  8.     else:
  9.         prime.append(i1)
  10. for each in range(2,n+1,2):
  11.     for i1 in prime:
  12.         for i2 in prime:
  13.             if i1 + i2 == each and i1 <= i2:
  14.                 print(f'{each}={i1}+{i2}')
  15.                 break
  16.         if i1 + i2 == each and i1 <= i2:
  17.             break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 22:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表