素数--北航200年机试
来源:互联网 发布:深入理解linux内核4.4 编辑:程序博客网 时间:2024/05/01 03:20
- 题目描述:
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
- 输入:
输入有多组数据。
每组一行,输入n。
- 输出:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
- 样例输入:
100
- 样例输出:
11 31 41 61 71
方法一、根据要求找
#include <stdio.h>#include <stdlib.h>#include<math.h>#include<string.h>//思路,输入一个整数,将小于他其各位我1的素数存起来int prime[10001];int main(){ int n; int i,j; while(scanf("%d",&n)!=EOF) { int primesize=0;//不同位置初始化不一样 for(i=11; i<n; i+=10) { int k= (int)sqrt(i)+1; int flag=1;//falg为0代表不是素数 for (j=2; j<=k; j++) { if(i%j==0) { flag=0; break; } } if(flag==1) { prime[primesize++]=i; } } if(primesize==0) { printf("-1\n"); } else { int m; for(m=0; m<primesize-1; m++) { printf("%d ",prime[m]); } printf("%d\n",prime[primesize-1]); } } return 0;}
方法二 把所有素数找出来,再一一对应# include<stdio.h>int prime[10000];int primeSize;int mark[10001];//mark[x]为1代表其为非素数void init(){for (int i = 0; i < 10001; i++){mark[i] = 0;}primeSize = 0;for (int i = 2; i < 10001; i++){if (mark[i] == 1) continue;prime[primeSize++] = i;for (int j = i*i; j < 10001; j += i){mark[j] = 1;}}}int main(){init();int n;while (scanf("%d", &n)!=EOF){int isOutPut = 0;for (int i = 0; i < primeSize; i++){if (prime[i] < n&&prime[i] % 10 == 1){if (isOutPut == 0){isOutPut = 1;printf("%d", prime[i]);}else printf(" %d", prime[i]);}}if (isOutPut == 0){printf("-1\n");}else printf("\n");}return 0;}
0 0
- 素数--北航200年机试
- 九度-北航-1163-素数
- 北航计算机机试08素数
- 北航12年机试--统计关键字的C语言实现
- 北航11年机试--求指定区间内的孪生数
- 最大公约数最简单的写法(北航13年机试)
- 北航13年机试--十进制数字的科学计数法表示的C语言实现
- 北航之梦
- 北航的校园生活
- 北航的科学研究
- 北航校长致辞
- 北航计算机复试
- 北航 考研心得
- 北航CSDN高校俱乐部
- 1018 隐藏的北航
- 北航1000(A+B)
- 北航1002-祭祀广场
- 在职研究生考试 ---北航
- 28. Implement strStr()(重要!)
- Android自定义View杂记
- 弹出层插件Avgrund的使用
- NodeJS学习历程(4)
- hdu 5064 Find Sequence(DP,单调性优化)
- 素数--北航200年机试
- 三条线_纪中_2929_最大匹配
- bjoi2016题解<不断更新<毕竟自己弱嘛TAT>>
- 支付宝接入中踩了个小坑
- Vitural Box 使用已有镜像文件报错 E_INVALIDARG (0x80070057)
- 10-logistic regression
- springmvc快速入门(XML版本)
- 项目管理利器maven入门笔记(2)
- iOS面试题四