kllly 发表于 2020-6-14 20:54:59

哥德巴赫猜想


【输入形式】

    输入大于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


求大佬帮忙解答{:10_266:} {:10_266:} 感谢

liuzhengyuan 发表于 2020-6-14 21:00:49

这个比较简单
就 3 个 for 一嵌套 基本 ok
你应该会判断奇数偶数吧~,直接判断枚举出来的这 3 个数字是否符合要求,然后输出

aaron.yang 发表于 2020-6-14 21:26:58

#include<iostream>
using namespace std;
int sushu(int x)
{
if(x<1) return 0;
if(x==2) return 1;
for(int i=2;i<=x-1;i++)
    if(x%i==0) return 0;
return 1;
}
int main()
{
int i,j,n;
cin>>n;
for(i=4;i<=n;i+=2)
{
    for(j=2;j<i;j++)
      if(sushu(j))
      if(sushu(i-j))
      {
          cout<<i<<"="<<j<<"+"<<i-j;
          break;
      }
}
return 0;
}

Twilight6 发表于 2020-6-14 21:50:17



这样应该可以的吧:

prime =
n = int(input('请输入大于2的偶数:'))
for i1 in range(2,n):
    k = int(i1**0.5)
    for i2 in range(2,k+2):
      if i1%i2 == 0:
            break
    else:
      prime.append(i1)
for each in range(2,n+1,2):
    for i1 in prime:
      for i2 in prime:
            if i1 + i2 == each and i1 <= i2:
                print(f'{each}={i1}+{i2}')
                break
      if i1 + i2 == each and i1 <= i2:
            break
页: [1]
查看完整版本: 哥德巴赫猜想