P1304 哥德巴赫猜想

前言

这是一道红题

题面

题目描述

输入一个偶数 N(N<=10000)N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。

输入格式

第一行N

输出格式

4=2+2 6=3+3 …… N=x+y

输入输出样例

输入 #1

10

输出 #1

4=2+2
6=3+3
8=3+5
10=3+7

题目分析

就是一道比较简单的筛法,不过筛完后做法多样,只不过时间复杂度不同而已。

方法1:筛出后两数相减得到结果

方法2:筛出后素数想加判断后得到结果

。。。。。。

AC代码如下

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int prime(int x)
 4 {
 5     for(int i=2;i<=sqrt(x);i++)
 6     {
 7         if(x%i==0)
 8         {
 9             return 0;
10         }
11     }
12     return 1;
13 } 
14 int main()
15 {
16     int n;
17     cin>>n;
18     for(int i=4;i<=n;i+=2)
19     {
20         for(int j=2;j<=i/2;j++)
21          if(prime(j)==1)
22          {
23                if(prime(i-j)==1)
24              {
25                  cout<<i<<"="<<j<<"+"<<i-j<<endl;
26                  break;
27              }
28          }
29     }
30     return 0;
31 } 

猜你喜欢

转载自www.cnblogs.com/Michael666/p/11626914.html