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 哥德巴赫猜想的主要内容,如果未能解决你的问题,请参考以下文章