P1304 哥德巴赫猜想

Posted michael666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 } 

 

以上是关于P1304 哥德巴赫猜想的主要内容,如果未能解决你的问题,请参考以下文章

P1304 哥德巴赫猜想

P1304 哥德巴赫猜想

luogu P1304 哥德巴赫猜想

Luogu P1304 哥德巴赫猜想

p1304 家族

Vijos p1304 回文数