码迷,mamicode.com
首页 > 其他好文 > 详细

P1304 哥德巴赫猜想

时间:2019-10-06 13:36:04      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:cout   结果   时间复杂度   就是   输入   its   pac   ace   最小   

前言

这是一道红题

题面

题目描述

输入一个偶数 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 哥德巴赫猜想

标签:cout   结果   时间复杂度   就是   输入   its   pac   ace   最小   

原文地址:https://www.cnblogs.com/Michael666/p/11626914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!