C++——素数(质数)专题训练4
作者有话说:时隔一年的质数专题训练更新啦~ 近期会多多更新笔记!!!
1255:求质数
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
输入正整数n,输出不大于n的最大质数
输入
只有一行且只有一个正整数: n ( 1 < n <= 10000 )
输出
只有一行且只有一个正整数:不大于n的最大质数
样例输入
10
样例输出
7
解题思路:首先,这道题要注意n的数据范围不是特别大,那我们可以考虑就还是用int类型。其次,这道题要求解的是不大于n的最大质数,当给定一个范围需要枚举其中的质数,并且要最大,我们可以考虑从大到小的顺序去枚举,循环的次数就少了许多。
#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;for(int i=n;i>1;i--)//从大到小的顺序进行枚举 {bool p=true;for(int j=2;j*j<=i;j++){if(i%j==0){p=false;break; } }if(p==true){cout<<i;return 0;} } return 0;
}
1170: 质数的和与积
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
两个质数的和是 S,它们的积最大是多少?
输入
一个不大于 10000 的正整数 S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
样例输入
50
样例输出
589
提示
19+31=50,19*31=589.
解题思路:
当S=50时,满足条件的数有 3 7 13 19 | 31 37 43 47;
当S=100时,满足条件的数有3 11 17 29 41 47 | 53 59 71 83 89 97;
当S=108时,满足条件的数有5 7 11 19 29 37 41 47 | 61 67 71 79 89 97 101 103 107(和1配对不算);
通过3个举例,我们不难发现两个质数的最大积都产生在S折中的左右两边第一个数,所以,我们考虑从中间开始枚举我们要的质数。比如,以S=50为例,先按照 S/2 开始从大到小的顺序找到第一个质数 i = 19,判断 i 和(S-i)这两个数是否为质数,如果都为质数,则输出 i*(s-i) 的积,代码结束。
#include<bits/stdc++.h>
using namespace std;
int main()
{int s;cin>>s;for(int i=s/2;i>1;i--)//先按照 S/2 开始从大到小的顺序找到第一个质数 i = 19{bool p=true,w=true;for(int j=2;j*j<=i;j++)//判断 i 是否为质数{if(i%j==0){p=false;break; } }for(int j=2;j*j<=(s-i);j++)//判断(S-i)是否为质数{if((s-i)%j==0){w=false;break; } }if(p==true&&w==true)//如果都为质数,则输出 i*(s-i) 的积{cout<<i*(s-i);return 0;} } return 0;
}
该题小结:这道题想要解出来并不难,方法有很多,主要还是透过现象看本质,需要同学们深度剖析这道题如何能快速找出解,可以通过代码的时间耗时以及内存大小体现出来,不断优化自己的代码,从中不仅加深了对题目的理解也提升了自我优化的水平。
1283: 质数对
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
如果两个连续奇数都是质数,则称这两个数为质数对;求出n以内所有的质数对数目。
输入
只有一行且只有一个正整数:n ( 1 <= n <= 30000 )
输出
只有一行且只有一个整数:n以内所有的质数对数目
样例输入
10
样例输出
2
注意:该题与上题解题思路差不多,需要注意的点主要是循环的区间,注释已在代码中标注。
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,s=0;cin>>n;for(int i=3;i<=n-2;i+=2)//1不是质数,2是偶数,所以从3开始 {//i<=n-2防止最后一对的质数对溢出 ; 排除偶数所以从3开始不断+2 bool p=true,w=true;for(int j=2;j*j<=i;j++)//判断 i 是否为质数 {if(i%j==0){p=false;break; } }for(int j=2;j*j<=i+2;j++)//判断 i 连续的下一个奇数是否为质数 {if((i+2)%j==0){w=false;break; } }if(p==true&&w==true) //如果 i 和 i+2 都为质数,则找到一组质数对并计数 {s++;} } cout<<s;return 0;
}
C++——素数(质数)专题训练4相关推荐
- 自然数 素数 质数_在Java中获取素数的无限列表
自然数 素数 质数 一个常见的问题是确定数字的素因式分解. 蛮力方法是审判部门( 维基百科 , 可汗学院 ),但是如果必须考虑多个数字,这需要大量的浪费工作. 一种广泛使用的解决方案是Eratosth ...
- 代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。...
package com.heima.Coding;/*判断101-200之间有多少个素数(质数),并输出所有素数.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明 ...
- QLU_ACM 2021 专题训练(一)题解 [暴力、排序、贪心、二分]
欢迎大家来做QLU_ACM寒假组织的专题训练
- C语言:判断一个数是否为素数/质数
素数/质数的概念:一个的自然数,除了1和它自身外,不能被其他自然数整除的数叫素数,否则成为合数. 0和1既不是素数也不是合数,最小的素数是2. 方法1:从2到n - 1判断有没有能整除n的数.如果有, ...
- 自然数 素数 质数_俄罗斯娃娃素数
自然数 素数 质数 As a child, weren't you in wonder of Russian Dolls, and where you learnt how the dolls fit ...
- 自然数 素数 质数_素数列表–最多20,000个素数的图表
自然数 素数 质数 Here's a list of all 2,667 prime numbers between zero and 20,000. 以下是所有0至20,000之间的2,667个质数 ...
- php计算素数,质数素数计算器
素数 即 质数 . 质数(prime number)又称素数,有无限个.一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除(除0以外)的数称之为素数(质数):否则称为合数.根据算术基本定理 ...
- Kotlin 找素数/质数
质数又称素数 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. fun main() { //找素数 通常写法val numbers = listOf<Int>(21 ...
- 杭电ACM-LCY算法进阶培训班-专题训练15
杭电ACM-LCY算法进阶培训班-专题训练(03-07-11-15) 1012 最短路 #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofa ...
最新文章
- vs2015添加管理员权限
- Mybatis的parameterType传入多个参数
- Android系统如何管理自己内存的?
- Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现
- XML引入多scheme文件约束简单示例
- 测试HAPROXY的文件分流办法
- link函数 matlab,安装Excel link插件,实现Excel与Matlab的互联
- Linux下使用od查看文件
- 《Python核心编程》笔记 Python对象
- iOS LLDB console debug总结
- Spring Boot 2 尝鲜-动态 Banner
- python整理表格数据_python --整理数据结构(列表)
- 从菜鸟到资深工程师的进阶之路-任玉刚专访
- LaTex论文排版 | (24) 插入超链接和目录
- trans系列是sci几区_sci期刊分几个区
- 使用OpenCV和Python实现图像的颜色检测
- css 控制文字换行相关属性
- 各种艺术字、图片在线制作
- 深入浅出filament Android编译脚本
- tensorflow中的eval的用法
热门文章
- 修改计算机中文用户名,Win10电脑将中文登录用户名更改为英文名的方法
- 我的世界服务器无线刷物品,《我的世界》1.12无限刷物品方法图文教学
- Flutter学习之倒计时计时器
- 员工离职2个月,前领导要求他回去改代码,员工:收费5千一次
- 兼容性运行程序永远_永远不会有太多的应用程序
- 计算机二级只有上机考试吗,计算机等级考试二级是上机考试吗
- 关于前端在vue中实现‘距离某个时间点的倒计时’问题:设置了间隔计算时间,刚开始有停顿。
- Tableau 日月环比同比
- 前列腺增生症的治疗行业调研报告 - 市场现状分析与发展前景预测
- (十二)采购与入库数据表