1157:哥德巴赫猜想
【题目描述】
哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。
【输入】
(无)
【输出】
分行输出:
例如:
6=3+3
8=3+5
…
(每个数只拆开一次,请保证第一个加数最小)
【输入样例】
(无)
【输出样例】
(无)
#include<iostream>
using namespace std;
bool isPrime(int x)
{ //3.判断x是否是素数if(x<2) return false; //2之前的不是素数for(int i=2;i<x;i++) //最小的素数是2 {if(x%i==0) return false; //只要出现余数为0的情况,就不会是素数} return true; //剩下的数都是素数
}
int split(int x)
{//2.拆分数字xcout<<x<<"=";for(int i=2;i<x;i++) //先遍历第一个数 {int i2=x-i; //得到第二个数 if(isPrime(i)&&isPrime(i2)) //两个数分别进行素数的判断 {cout<<i<<"+"<<i2<<endl; //两个数都是素数的情况下才能输出 break; //跳出循环,保证最小的素数在前面 }}
}
int main()
{ for(int i=6;i<=100;i+=2) //1.将偶数遍历出来 {split(i); //调用拆分函数 }return 0;
}
总结
题目划分了三个步骤:
①遍历偶数,并且调用拆分函数。
这个步骤是在主函数main里写的,这个函数只要做遍历偶数和调用函数两件事情就可以了。巧妙地利用了赋值运算符+=与for循环的结合,将6-100之间的偶数都以参数的方式传进去即可。
②在拆分函数中,将传入的偶数拆成两个数,拆开的数进行素数的判断。
根据题目的要求,先把偶数打印出来,得到左边的 “6=”,再用循环遍历的方法确定第一个数的范围。有了第一个数范围之后,就可以确定第二数的范围。因为我们通过观察得出规律:第二个数 = 偶数 - 第一个数 。接着,我们假设素数函数存在,将两个数分别传入,如果都是素数才可以进行表达式的输出,为了确保最小的素数在前面,我们要用break进行跳出循环的操作。
③写一个判断素数的函数。
做三件事情:第一,判断x小于2的数是不是素数。第二,判断从2到x-1的数是不是素数。第三,剩下的都返回true即可,也就是剩下的数都是素数。
例子:7是不是素数。
从2开始遍历,也就是2、3、4、5、6
7除以2或3或4或5或6,余数都不是0,所以就返回true,也就是7是素数。
例子:6是不是素数。
从2开始遍历,也就是2、3、4、5
6除以2或3或4或5,只要有余数是0的情况,就会返回false,也就是6不是素数。
所以,当循环遍历的时候,不可以遍历自己。
素数:它的因数只有1和本身。素数也可以叫做质数。从字面意思上去看,素数的性格是朴素的,质数的性格是追求质量,它们的共同点就是以少为主,因此共同点可以与素数的概念联系在一起。
1157:哥德巴赫猜想相关推荐
- C++1157哥德巴赫猜想
哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和.编程将6-100所有偶数表示成两个素数之和. [输入] (无) [输出] 分行输出: 例如: 6=3+3 8=3+5 ... (每个数只拆开一 ...
- 信息学奥赛一本通(1157:哥德巴赫猜想)
1157:哥德巴赫猜想 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 21651 通过数: 12656 [题目描述] 哥德巴赫猜想的命题之一是:大于6 的 ...
- 信息学奥赛一本通(c++):1157:哥德巴赫猜想
一.题目 1157:哥德巴赫猜想 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和.编程将6-100所有 ...
- 信息学奥赛一本通:1157:哥德巴赫猜想
1157:哥德巴赫猜想 [题目描述] 哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和.编程将6-100所有偶数表示成两个素数之和. [输入] (无) [输出] 分行输出: 例如: 6=3+3 ...
- 信息学奥赛一本通 1157:哥德巴赫猜想
[题目链接] ybt 1157:哥德巴赫猜想 [题目考点] 1. 质数 [解题思路] 遍历6~100的每个偶数i,针对每个数字i: 遍历2~i/2的每个数字j,如果j与i-j是都为质数,那么说明将偶数 ...
- NOIP C++ 1157:哥德巴赫猜想
1157:哥德巴赫猜想 [题目描述] 哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和.编程将6-100所有偶数表示成两个素数之和. [输入] (无) [输出] 分行输出: 例如: 6=3+3 ...
- c语言表示哥德巴赫猜想,用C语言来验证哥德巴赫猜想(定义的是int型)
哥德巴赫猜想: 如果任意一个大于6的偶数都可以写成两个素数之和.就将其称为符合哥德巴赫猜想. #include #include /// /// 判断一个数是否是素数 /// /// 要判断的数 // ...
- 学术-数学:哥德巴赫猜想
ylbtech-学术-数学:哥德巴赫猜想 哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和.但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮 ...
- 用跑得最慢的电脑程序,理解最高深的哥德巴赫猜想
五条规则的图灵机可视化.每列像素代表一步计算,步骤从左到右.黑色代表1.最右边表示图灵机的停机.(图片来源:Peter Krumins/Quanta Magazine) 文章来源:环球科学 " ...
最新文章
- Parser Generator Tips翻译(中英对译) by Joshua Xu
- hdu4923 f(A,B)分段处理
- C语言矩阵N*N旋转的算法(附完整源码)
- JS ===和==区别
- c#中使用ref和out传值
- CocoaPods打包静态库
- sdh管理单元指针_SDH设备上STM-1接口是啥玩意
- 打拼10年的数据分析师,终于明白职场鄙视链才是最大的沉没黑洞
- 职业规划计算机专业1500字,【计算机职业生涯规划书2000字】_计算机专业职业生涯规划书2000字...
- 禅修内观 | 一个璀璨的思想成就
- Fiddler抓包工具报:The system ptoxy changed. Click to reenable capturing
- hadoop可以解决什么问题_在家艾灸可以解决这些问题
- Avaya PBX sip trunk对接第三方sip server传递UUI的方法
- vue组件及生命周期
- windows mobile注册表修改小全
- 【赛博学】这才是元宇宙-三层空间-现实-经济-网络
- 标宋2号 仿宋3号 调整行间距
- 拼多多 2019校园招聘 正式批笔试-2018.8.28
- linux系统资源监控常用命令
- php转nodejs 代码,NodeJS实现视频转码的示例代码
热门文章
- Pytorch + Win10系统 + pip安装+ CUDA9.1版本(安装CUDA10.2版本)
- [JavaScript]如何将www.xxx.com变为com.xxx.www
- SRTM、ASTER、ALOS、TanDEM-X等常用免费数字高程模型(DEM)基本信息汇总
- HTTP请求错误 2xx 3xx 4xx 5xx
- 特征缩放feature scaling(吴恩达版详解)
- 【c语言】新概念(bushi) Water Article 多功能计算器的数学
- mysql数据库sa默认密码_SQL Server数据库sa密码相关问题的解决方法
- Mac键盘不起作用?苹果电脑键盘失灵解决教程
- 项目实训——2022
- 51单片机中断详解(上)