题目描述:
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入描述:
输入有多组数据。
每组一行,输入n。
输出描述:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
样例输入:
100
样例输出:
11 31 41 61 71

解题思路: 本题很多人,可能会想到用枚举的方法,将输入数内的数都进行素数判断,符合条件则输出,该方法存在大量的重复计算,耗时。因先将输入范围内的所有素数先筛选好。这里筛选素数的方法也比较巧妙,将每一个素数的倍数标记为非素数。标记素数倍数时,选择从i∗ii*ii∗i开始,是因为i∗k(k&lt;i)i*k(k&lt;i)i∗k(k<i)必已经在求得k的某素因数被标记过了。

#include<bits/stdc++.h>
using namespace std; int prime[10000];//保存筛得的素数
int primeSize; //保存的素数的个数
bool mark[10001]; //若mark[x]为true,则表示该数x已被标记为非素数void init(){//素数筛法 for(int i=1; i<=10000; i++){mark[i] = false;} //初始化,所有的数字标记为非素数primeSize = 0; //素数个数初始化为0for(int i=2; i<=10000; i++){//依次遍历2到10000所有的数字 if(mark[i] == true) continue;//若该数字已经被标记,则跳过prime[primeSize++] = i;//否则,又新得到一个素数for(int j=i*i; j<=10000; j+=i){//并将该数的所有倍数均标记成非素数mark[j] = true;}}
}int main(){init();//在程序一开始首先取得2到10000中所有的素数int n;while(scanf("%d", &n)!=EOF){bool isOutput = false;//标记是否输出了第一个符合条件的素数 for(int i=0; i<primeSize; i++){//依次遍历得到的所有素数 if(prime[i]<n && prime[i]%10==1){//测试当前素数是否符合条件 if(isOutput==false){//第一个输出数前不加空格 isOutput = true;printf("%d", prime[i]); }else printf(" %d", prime[i]);//非第一个输出数前要加空格 }}if(isOutput == false){//若没有输出,则说明没有符合条件的数 cout << "-1" << endl;//输出-1 } else cout << endl;//否则换行 }return 0;
}

本题在线测试入口

结束


素数 [2008年北京航空航天大学计算机研究生机试真题]相关推荐

  1. 题目1163:素数 2008年北京航空航天大学计算机研究生机试真题

    格式原因,所以先存储,再打印 #include <stdio.h> #include <math.h> bool judge(int n) {int i,j,k;int a[1 ...

  2. 素数判定 [2009年哈尔滨工业大学计算机研究生机试真题]

    题目描述: 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数). 输入描述: 测试数据有多组,每组输入一个数n. 输出描述: 对于每组输入,若是素数则输出yes,否则输入no. 样例输入: ...

  3. 2008--2009年北京航空航天大学计算机研究生机试真题

    http://ac.jobdu.com/problem.php?pid=1165 字符串匹配 #include<iostream> #include<cstdio> #incl ...

  4. 最大公约数 [2011年哈尔滨工业大学计算机研究生机试真题]

    题目描述> 输入两个正整数,求其最大公约数. 输入描述: 测试数据有多组,每组输入两个正整数. 输出描述: 对于每组输入,请输出其最大公约数. 样例输入: 49 14 样例输出: 7 解题思路: ...

  5. 进制转换 [2008年北京大学图形实验室计算机研究生机试真题]

    题目描述: 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所能表达的范围之内. 不同进制的表示符号为(0,1,-,9,a,b,-,f)或者(0,1,-,9,A,B,-,F). ...

  6. 211大学计算机复试不机试,复试机试之上海交通大学计算机研究生机试真题.doc...

    复试机试之上海交通大学计算机研究生机试真题 (你自己回去改格式啊,这个有多重繁杂字体,你自己改好看点~~还有知识05年到11年的)复试机试之2011年上海交通大学计算机研究生机试真题 (2012-02 ...

  7. 2000年华中科技大学计算机研究生机试真题 对称矩阵

    题目1180:对称矩阵 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2518 解决:1295 题目描述: 输入一个N维矩阵,判断是否对称. 输入: 输入第一行包括一个数:N(1<= ...

  8. 上海交大研究生计算机考研真题,2011年上海交通大学计算机研究生机试真题

    Oracle 约束(constraint)的几个参数的小研究 ORACLE中,约束分deferred 跟 immediate 2种: deferred:如果 Oracle 在事务提交(commit)时 ...

  9. [素数拓展] 质因数的个数 [2007年清华大学计算机研究生机试真题]

    题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=22235,共有5个质因数. 输入描述: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1< ...

最新文章

  1. server+client+http,服务器与客户端的交互
  2. keras保存和载入模型继续训练
  3. 【美文】接受生活的无力感,才能更好的出发
  4. julia(4)-if ,else
  5. Activity与Intent
  6. 一台计算机连入计算机网络后通过该计算机,一台计算机连入计算机网络后,该计算机( )。...
  7. 数字图像处理技术在TWaver可视化中的应用
  8. mac地址转换_mac电脑格式转化工具
  9. 【权限设计】一个案例,三个角色,简单说下B端产品的权限设计
  10. bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
  11. HTML学习笔记(七)
  12. 【OpenCV 例程300篇】47. 直方图处理之直方图匹配
  13. 微信小程序中图表可视化
  14. 网页版查询mysql数据_网页查询数据库 数据库查询
  15. 格局打开,外贸牛人的价格谈判策略!
  16. 万字长文,带你入门异步编程
  17. nvidia-docker的安装
  18. 华为轮值CEO郭平:与伙伴同行,打造智能社会五朵云之一
  19. AndroidWear 连接手持设备与穿戴设备模拟器到开发环境
  20. python折叠代码_Python实现代码块儿折叠

热门文章

  1. linux安装了vnc服务器,Linux安装VNC服务及配置
  2. springmvc5中设计模式
  3. 洛谷 P2286 [HNOI2004]宠物收养场
  4. Yum安装Memcache
  5. *** error 65: access violation at C:0x001B : no 'execute/read' permission
  6. LAMP默认安装路径
  7. Lucene.Net的中文分词组件AdvancedChineseAnalyzer
  8. 【Java从0到架构师】Linux 基础知识、常用命令
  9. Linux操作Oracle(13)——java执行sql查询语句 报错 “无法绑定由多个部分组成的标识符“ 解决方案
  10. powershell自动化操作AD域、Exchange邮箱系列(8)—链接操作Sqlserver数据库