PTA 7-5 素数排位(10 分)
已知素数序列为 2、3、5、7、11、13、17、19、23、29……,即素数的第一个是 2,第二个 是 3,第三个是 5……那么,随便挑一个数,若是素数,能确定是第几个素数吗?如果不是 素数,则输出 0。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一正整数 N(1≤N≤1000000)。 输出格式: 对于每组测试,输出占一行,如果输入的正整数是素数,则输出其排位,否则输出 0。
输入样例:
2
6
4
5
13
991703
输出样例:
1
0
0
3
6
77901
#include <stdio.h>
#include <math.h>
int prime(int x)//求素数函数,素数返回 1,否则返回 0
{ int i; for(i=2;i<=sqrt(x);i++)if (x%i==0) return(0);return(1);
}
int main(void)
{ int n,i,s;
while((scanf("%d",&n))!=EOF)
{ s=0;
if(prime(n)==0) printf("%d\n",s);else
{ for (i=1;i<=n;i=i+2)if(prime(i)==1) s++;printf("%d\n",s);
}
}
return 0;
}
/*埃氏 Eratosthenes 筛选法(求一个范围中的所有素数) 我们用一个标记数组 f[maxi],其中 f[i]=0 为素数,否则为非素数,首先我们知道 1,和 0 都不是素数,所以 f[0]=1,f[1]=1 1.随后我们在未标记的数里面找最小的数,为 2,他不是任何数的的倍数,所以 2 是素数, 此时我们就把所有 2 的倍数都标记为 0;3,6,8,10……2*i 2.我们再从剩余未标记的数里面找最小的数,为 3,他也不是任何数的倍数,所以 3 是素数, 此时我们把所有 3 的倍数也都标记为 0;6,9,12,15,18……3*i 3.我们再从所有未标记的数里面找最小的数,为 5,他也不是任何数的素数,所以 5 是素数, 此时我们把所有 5 的倍数都标记为 0;10,15,20,25……5*i, …………以此类推 从 2 开始寻找素数,每次找到一个素数后就将它的倍数全部筛掉,不断循环,直至原队列 (数组)为空。 时间复杂度为 O(nlog logn)。*/
#include <stdio.h>
int main()
{ int n,len=0,i=0,k=0,a[1000]={0},b[1000]; // st[x]存储 x 是否被筛掉
while((scanf("%d",&n))!=EOF) { b[len++]=n;}
for (k=0;k<len;k++)
{if (b[k]==2) { a[k]=1;continue;}//偶数 2 是素数if (b[k]%2==0){ a[k]=0;continue;}//偶数肯定不是素数int st[1000000]={1,1,0};for(i=2;i<=b[k];i=i+1){if(!st[i])
{ a[k]++;for(int j=2 * i; j<=b[k]; j=j+i){st[j]=1;}
}}}
for (k=0;k<len-1;k++)
{ printf("%d\n",a[k]);
}printf("%d",a[k]);
return 0;
}
PTA 7-5 素数排位(10 分)相关推荐
- 7-5 素数判断 (10 分)
7-5 素数判断 (10 分) 输入一个正整数,输出其是否为素数. 输入样例: 15 结尾无空行 输出样例: NO 结尾无空行 输入样例: 53 结尾无空行 输出样例: YES 结尾无空行
- PTA: 6-8 剩余不足 (10分)(c语言)
PTA: 6-8 剩余不足 (10分)(c语言) 若每人发 a 颗,则多 b 颗: 若每人发 c 颗,则差 d 颗. 请问:p.q 各为多少? 函数原型 // 剩余不足问题 int SurplusSh ...
- L1-028 判断素数 (10 分)
L1-028 判断素数 (10 分) 本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整 ...
- PTA——6-1 简单输出整数 (10 分)
6-1 简单输出整数 (10 分) 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数. 函数接口定义: void PrintN ( int N ); 其中N是用户传入的参数.该函数必须 ...
- PTA 7-4 十进制转二进制 (10 分)
7-4 十进制转二进制 (10 分) 编写一个函数,其参数是一个整数N,返回值也是一个整数(假设是R),规则是整数R写出来(输出出来)是N的二进制形式.例如:参数是15,返回值应是1111.主函数中输 ...
- pta 习题5-1 符号函数 (10分)
浙大版<C语言程序设计(第3版)>题目集 习题5-1 符号函数 (10分) 本题要求实现符号函数sign(x). 函数接口定义: int sign( int x ); 其中x是用户传入的整 ...
- PTA 6-9 递归计算P函数 (10分)
本题要求实现下列函数P(n,x)的计算,其函数定义如下: 函数接口定义: double P( int n, double x ); 其中n是用户传入的非负整数,x是双精度浮点数.函数P返回P(n,x) ...
- (浙江大学数据结构)PTA Complete Binary Search Tree (10 分)
题目: A Binary Search Tree (BST) is recursively defined as a binary tree which has the following prope ...
- PTA天梯赛 L1-067 洛希极限 (10 分)
科幻电影<流浪地球>中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木"刚体洛希极限",地球面临被彻底撕碎的危险.但实际上,这个计算是错误的. ...
最新文章
- VMware桌面虚拟化在学校机房的应用
- Redmine使用指南
- Rman duplicate数据库复制(单系统)
- 2018 GitHub最火技术趋势
- 第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库
- BugkuCTF-Misc:隐写3
- JS 清空table
- access inner join 数据类型不匹配_用Access开发生产管理系统
- PAT练习题:D进制的A+B(C++)
- mysql 事务 select_mysql 多个select需要放入一个事务吗?
- weiphp 简介--笔记
- 【短评】街边小吃虽然味道不错,但是长期只吃零食不吃正餐会让你的孩子营养不良...
- 索引的类型及分类,以及唯一索引、聚集索引和非聚集索引的本质区别
- 大型强子对撞机再次遭遇断电
- 2021最新WordPress安装教程(一):Centos7安装Apache
- go mysql打印sql语句
- 固高运动卡的使用 4 运动之PT(点位)运动
- 团队项目开发编码规范
- 运筹说 第42期 | 算法介绍之运输问题
- CleanMyMac多功能mac电脑管家清理软件