https://www.luogu.com.cn/problem/P3912

本人所有文章都受版权保护,著作权归本人(Joseph_tony)所有,未经授权,禁止转载,若不得不转载,请注明原文网址链接!谢谢配合!

题目背景
1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和。质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3。需要特别说明的是1不是质数。

这就是哥德巴赫猜想。欧拉在回信中说,他相信这个猜想是正确的,但他不能证明。

从此,这道数学难题引起了几乎所有数学家的注意。哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。

题目描述
现在请你编一个程序验证哥德巴赫猜想。

先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数。

输入格式
仅有一行,包含一个正奇数n,其中9<n<20000

输出格式
仅有一行,输出3个质数,这3个质数之和等于输入的奇数。相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。如果表示方法不唯一,请输出第一个质数最小的方案,如果第一个质数最小的方案不唯一,请输出第一个质数最小的同时,第二个质数最小的方案。

输入输出样例
输入 #1
2009
输出 #1
3 3 2003

int aiPrime(int n){//标记1~n范围内质数的状态 ,并返回质数个数//1. 初始化 默认所有数字状态为真memset(isPrime,?,sizeof(isPrime));//2. 特殊值进行处理isPrime[0]=isPrime[1]=?;//3. 遍历筛选//3.1 遍历2~nint cnt=0;//质数个数 for(int i=2;i<=n;i++){//3.2 改变所有质数倍数的状态if(isPrime[i]){//i是质数 cnt++;//将质数i的倍数(i*j)状态修改为falsefor(int j=2;?;j++){isPrime[?]=?;}} }return cnt;
}
//埃式筛的基本方式

下方代码用时较长(1.9s),质数判断的函数,枚举进入数组,最后输出即可

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int n;
int a,b,c;
bool isPrime[200005]={0};int aiPrime(int n)
{memset(isPrime,?,sizeof(isPrime));isPrime[0]=isPrime[1]=?;for(int i=2;i<=n;i++){if(isPrime[i]){for(int j=2;?;j++){isPrime[?]=?;}}}
}int main()
{cin>>n;aiPrime(n);for(int i=2;i<n-2;i++){for(int j=i;j<n-2;j++){for(int k=j;k<n-2;k++){if(?){cout<<i<<" "<<j<<" "<<k;return 0;}}}}return 0;
}

下方代码经过优化,只需33ms,你值得拥有

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int n;
int a,b,c;
bool isPrime[200005]={0};int aiPrime(int n)
{memset(isPrime,?,sizeof(isPrime));isPrime[0]=isPrime[1]=?;for(int i=2;i<=n;i++){if(isPrime[i]){for(int j=2;?;j++){isPrime[?]=?;}}}
}int main()
{cin>>n;aiPrime(n);for(int i=2;i<n-2;i++){for(int j=?;j<n-2;j++){int k=?;if(?){if(?){cout<<i<<" "<<j<<" "<<k;return 0;}}}}return 0;
}

本人所有文章都受版权保护,著作权归本人(Joseph_tony)所有,未经授权,禁止转载,若不得不转载,请注明原文网址链接!谢谢配合!

哥德巴赫猜想(升级版)相关推荐

  1. 【筛素数】P1579 哥德巴赫猜想(升级版)

    https://www.luogu.com.cn/problem/P1579 考点:埃拉托斯特尼筛法 / 欧拉筛法 题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想: ...

  2. 哥德巴赫猜想(升级版)(洛谷-P1579)

    题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是 ...

  3. P1579 哥德巴赫猜想(升级版)

    题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是 ...

  4. c语言表示哥德巴赫猜想,用C语言来验证哥德巴赫猜想(定义的是int型)

    哥德巴赫猜想: 如果任意一个大于6的偶数都可以写成两个素数之和.就将其称为符合哥德巴赫猜想. #include #include /// /// 判断一个数是否是素数 /// /// 要判断的数 // ...

  5. 学术-数学:哥德巴赫猜想

    ylbtech-学术-数学:哥德巴赫猜想 哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和.但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮 ...

  6. 用跑得最慢的电脑程序,理解最高深的哥德巴赫猜想

    五条规则的图灵机可视化.每列像素代表一步计算,步骤从左到右.黑色代表1.最右边表示图灵机的停机.(图片来源:Peter Krumins/Quanta Magazine) 文章来源:环球科学 " ...

  7. 100c之31:哥德巴赫猜想

    Table of Contents 1 问题 2 分析 3 解决方案 4 输出结果 问题 哥德巴赫猜想:验证2000以内的正偶数都能分解为两个素数之和( 即验证哥德巴赫猜想对2000以内的正偶数成立 ...

  8. 验证哥德巴赫猜想c语言算法,验证哥德巴赫猜想的简单优化

    哥德巴赫猜想:任意一个大于2的偶数,都可以表示为两个素数之和. 验证:2000以内,大于2的偶数,都可以分解为两个素数之和. 分析:2000以内,大于2的偶数为999个,需要逐个判断. 判断过程:对于 ...

  9. 实验4-2-3 pta验证“哥德巴赫猜想” (20分)

    验证"哥德巴赫猜想" (20分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是 ...

最新文章

  1. 简单介绍自动化运维工具clip
  2. [Leetcode] Simplify Path
  3. 98.512X4位的芯片,要怎么组成4K的存储空间要用多少个芯片级联?具体用多少引脚?
  4. Matlab实用程序--图形应用-图形的叠加
  5. C++new和delete运算符
  6. Google 翻译,梦想与现实的距离有多远
  7. 提速 30%!腾讯TQUIC 网络传输协议
  8. C/C++编程心得(三)
  9. 使用HTML编写简单的邮件模版
  10. 数学建模之相关性分析1
  11. 节假日查询API接口上线
  12. unity 模型销毁_Unity中销毁游戏对象的方式
  13. SAP中汇率固定配置和应用分析测试
  14. 309.Best Time to Buy and Sell Stock with Cooldown
  15. python怎么输出所有奇数_python输出100以内奇数的几种输出方式-Go语言中文社区
  16. 《了不起的盖茨比》中体现的人生观、价值观、爱情观
  17. Ajax回调函数无反应及进erro问题记录。
  18. 前尘浮华一场梦 NOI2018 游记
  19. html无法展示swf,flexpaper无法预览swf文件_html/css_WEB-ITnose
  20. visual studio控制台中文乱码问题

热门文章

  1. 【linux命令】df和du的区别、文件系统
  2. MCtalk创业声音丨博学明辨:兴趣社交,给退休前后老年朋友的「小而美」空间
  3. IOS 个人证书的申请
  4. StackWalker 堆栈打印
  5. 优惠劵秒杀优化-分布式锁
  6. 多元微积分(一)--导数与偏导数
  7. 定了!阿里云盘马上公测 本月正式上线 !
  8. 在大裁员背景下,一个年薪百万的offer有多容易
  9. Java学习者的25个目标
  10. java导出excel设置边框_Excel如何设置表格边框样式,记住这几个关键属性就懂了