作者有话说:万变不离其宗,本篇共4题,解题方法有很多种,主要考察学生阅读质数相关的应用题对其理解程度是否准确,后续更新新的专题。


1.线性筛素数

【题目描述】

如题,给定一个范围 n,有 q 个询问,每次输出第 k 小的素数。

【输入】

第一行包含两个正整数 n,q,分别表示查询的范围和查询的个数。

接下来 q 行每行一个正整数 k,表示查询第 k 小的素数。

【输出】

输出 q 行,每行一个正整数表示答案。

【样例输入】

100 5
1
2
3
4
5

【样例输出】

2
3
5
7
11
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,q,k,s;//n表示范围 q表示询问次数 k表示第k小bool p;cin>>n>>q;for(int i=1;i<=q;i++){cin>>k;s=0;for(int j=2;j<=n;j++) {p=true;for(int z=2;z<j;z++){if(j%z==0)    {p=false;break;}}if(p==true){s++;if(k==s) cout<<j<<endl;} }} return 0;
}

2.密码质数:passprime

【题目描述】

因为素数没有1以外的因数,而且素数排列也完全没有规律,因此常被用来做为生成密码的基础。牛博士想从5000以内的素数表中选取若干个素数用来生成密码。你是牛博士的助手,主动提出要帮牛博士找来些素数。

【输入】

输入文件有多行,第一行为数值N,表示需要N个素数,N<=1000。

接下来的N行,每行一个数i,代表素数表中的第i个数,素数表的第一个数是2

【输出】

有N行数据,每行一个数为按要求找到的素数。

【样例输入】

3
1
5
3

【样例输出】

2
11
5
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,k,s;bool p;cin>>n;for(int i=1;i<=n;i++){cin>>k;s=0;for(int j=2;j<=5000;j++)   {p=true;for(int z=2;z<j;z++){if(j%z==0)    {p=false;break;}}if(p==true){s++;if(k==s) cout<<j<<endl;} }} return 0;
}

3.重排质数 sortprime

【题目描述】

牛博士上次的实验失败了,经过仔细的分析和研究,发现原来只在N个实验数据中找出素数是不够的,还要对这些素数进行排序,并标出该素数在原来N个数据中的位置。

【输入】

输入文件有多行,第一行为数值N,N<=1000

接下来的N行,每行一个实验数据,每个数据<=10000

【输出】

有多行数据,按字典序输出实验数据中的素数,以及该素数在原数据中的位置。

每行有两个数用空格隔开,第一个数是找到的素数,第二个数是该素数在原数据中的位置.

【样例输入】

5
1
11
5
6
7

【样例输出】

5 3
7 5
11 2
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,k,s=0,a[10001],b[10001],c[1001];//a数组是输入的实验数据,b数组存质数,c数组存质数所在原数据中的位置 bool p; cin>>n;for(int i=1;i<=n;i++){cin>>a[i];p=true;for(int j=2;j<a[i];j++){if(a[i]%j==0){p=false;break;}}if(p==true&&a[i]!=1){s++;//是质数进行计数 b[s]=a[i];c[s]=i;//质数和所在位置分别存储到b数组和c数组 }}for(int i=1;i<=s;i++){for(int j=i+1;j<=s;j++){if(b[i]>b[j]){swap(b[i],b[j]);swap(c[i],c[j]);//从小到大排序 } }}for(int i=1;i<=s;i++){cout<<b[i]<<" "<<c[i]<<endl; }return 0;
}

4.特殊的质数肋骨 Superprime Rib

【题目描述】

农民约翰的母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。

农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数。

举例来说:7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733 是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。7331 被叫做长度 4 的特殊质数。

写一个程序对给定的肋骨的数目 n,求出所有的特殊质数。1 不是质数。

【输入】

一行一个正整数 n。

【输出】

按顺序输出长度为 n 的特殊质数,每行一个。

【样例输入】

4

【样例输出】

2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,head=1,tail=1,x;//head和tail分别表示特殊质数的范围(头和尾) bool p;cin>>n;for(int i=1;i<n;i++){head=head*10;} tail=head*10;for(int i=head;i<tail;i++){x=i;p=true; while(x!=0){for(int j=2;j<x;j++){if(x%j==0){p=false;break;}  }x=x/10;//从右开始切肋骨,依次判断是否为质数 }if(p==true&&i/head!=1)//因为1不是质数 最高位为1的质数不能输出 cout<<i<<endl;}return 0;
}

C++——素数(质数)专题训练2相关推荐

  1. C++——素数(质数)专题训练4

    作者有话说:时隔一年的质数专题训练更新啦~  近期会多多更新笔记!!! 1255:求质数 时间限制: 1.000 Sec  内存限制: 128 MB 题目描述 输入正整数n,输出不大于n的最大质数 输 ...

  2. 自然数 素数 质数_在Java中获取素数的无限列表

    自然数 素数 质数 一个常见的问题是确定数字的素因式分解. 蛮力方法是审判部门( 维基百科 , 可汗学院 ),但是如果必须考虑多个数字,这需要大量的浪费工作. 一种广泛使用的解决方案是Eratosth ...

  3. 代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。...

    package com.heima.Coding;/*判断101-200之间有多少个素数(质数),并输出所有素数.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明 ...

  4. QLU_ACM 2021 专题训练(一)题解 [暴力、排序、贪心、二分]

    欢迎大家来做QLU_ACM寒假组织的专题训练

  5. C语言:判断一个数是否为素数/质数

    素数/质数的概念:一个的自然数,除了1和它自身外,不能被其他自然数整除的数叫素数,否则成为合数. 0和1既不是素数也不是合数,最小的素数是2. 方法1:从2到n - 1判断有没有能整除n的数.如果有, ...

  6. 自然数 素数 质数_俄罗斯娃娃素数

    自然数 素数 质数 As a child, weren't you in wonder of Russian Dolls, and where you learnt how the dolls fit ...

  7. 自然数 素数 质数_素数列表–最多20,000个素数的图表

    自然数 素数 质数 Here's a list of all 2,667 prime numbers between zero and 20,000. 以下是所有0至20,000之间的2,667个质数 ...

  8. php计算素数,质数素数计算器

    素数 即 质数 . 质数(prime number)又称素数,有无限个.一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除(除0以外)的数称之为素数(质数):否则称为合数.根据算术基本定理 ...

  9. Kotlin 找素数/质数

    质数又称素数 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. fun main() { //找素数 通常写法val numbers = listOf<Int>(21 ...

  10. 杭电ACM-LCY算法进阶培训班-专题训练15

    杭电ACM-LCY算法进阶培训班-专题训练(03-07-11-15) 1012 最短路 #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofa ...

最新文章

  1. 从原理到实操,看当前最佳的YOLO V4是如何炼成的?
  2. windows 7下同时安装visual studio 2012和2010
  3. python3占位符 中文_WxString:有没有使用Python 3-占位符实现字符串格式化的C/C++代码?...
  4. java 反射set方法赋值_反射 根据属性名获得属性set方法并为set方法赋值
  5. VMware中为linux设置网络
  6. 799元首发!小米手表Color:14天超长续航、专业运动健康管理
  7. java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据
  8. 全球开发者调查:JavaScript 成最爱,还最喜欢用 React
  9. Spring boot 配置文件,输入key值,自动补全--- 通过安装插件实现
  10. DOS检查网络连通性并记录时间
  11. 在matlab中配置凸优化所需的求解器cvx、mosek之避雷
  12. 微型计算机原理与接口技术第五版pdf,微型计算机原理与接口技术(第5版)
  13. Spurious Local Minima are Common in Two-Layer ReLU Neural Networks
  14. 股市投资必修课十九---DCF三要素经营存续期、现金创造力、经营周期定位
  15. Micro LED 巨量转移技术
  16. 如何将图片变成png格式?怎样在线转图片格式?
  17. 实用工具---python环境安装注意事项
  18. 华硕电脑改光驱启动计算机,华硕笔记本怎么设置光盘启动,详细教您怎么设置华硕笔记本光盘启动...
  19. 与技术无关,但却值得码农们好好读一读的怪书:禅与摩托车维修艺术
  20. 使用adb连接夜神模拟器,查看多开模拟器端口号

热门文章

  1. 《江山美人》票房飘红 三天狂收2300万元
  2. 搜狐回应迟到一次罚款500;小米宣布5亿港元股权激励计划;特斯拉成美国史上市值最高车企
  3. 【大物第七版·电磁感应 电磁场理论】感生电动势 感生电场总结
  4. matlab 与cla的区别clf,何时使用CLA()、clf()或CLOSE()清除matplotlib中的绘图?
  5. Attention的汇总与辨析_Additive、Multiplication、Scaled dot-product、Self Attention、Multi-head Self-Attention
  6. 这些天求教有感---求人不如求己
  7. 7-83 币值转换 (20分)
  8. 学EE做硬件找工作不如学CS做软件,为什么会这样?
  9. 统计所有n阶方阵(n>0)中既满足自反性规则又满足对称性规则的方阵数量(注:矩阵元素值仅为0或1)
  10. Android 网页加载问题