已知素数序列为 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 分)相关推荐

  1. 7-5 素数判断 (10 分)

    7-5 素数判断 (10 分) 输入一个正整数,输出其是否为素数. 输入样例: 15 结尾无空行 输出样例: NO 结尾无空行 输入样例: 53 结尾无空行 输出样例: YES 结尾无空行

  2. PTA: 6-8 剩余不足 (10分)(c语言)

    PTA: 6-8 剩余不足 (10分)(c语言) 若每人发 a 颗,则多 b 颗: 若每人发 c 颗,则差 d 颗. 请问:p.q 各为多少? 函数原型 // 剩余不足问题 int SurplusSh ...

  3. L1-028 判断素数 (10 分)

    L1-028 判断素数 (10 分) 本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2​31​​的需要判断的正整 ...

  4. PTA——6-1 简单输出整数 (10 分)

    6-1 简单输出整数 (10 分) 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数. 函数接口定义: void PrintN ( int N ); 其中N是用户传入的参数.该函数必须 ...

  5. PTA 7-4 十进制转二进制 (10 分)

    7-4 十进制转二进制 (10 分) 编写一个函数,其参数是一个整数N,返回值也是一个整数(假设是R),规则是整数R写出来(输出出来)是N的二进制形式.例如:参数是15,返回值应是1111.主函数中输 ...

  6. pta 习题5-1 符号函数 (10分)

    浙大版<C语言程序设计(第3版)>题目集 习题5-1 符号函数 (10分) 本题要求实现符号函数sign(x). 函数接口定义: int sign( int x ); 其中x是用户传入的整 ...

  7. PTA 6-9 递归计算P函数 (10分)

    本题要求实现下列函数P(n,x)的计算,其函数定义如下: 函数接口定义: double P( int n, double x ); 其中n是用户传入的非负整数,x是双精度浮点数.函数P返回P(n,x) ...

  8. (浙江大学数据结构)PTA Complete Binary Search Tree (10 分)

    题目: A Binary Search Tree (BST) is recursively defined as a binary tree which has the following prope ...

  9. PTA天梯赛 L1-067 洛希极限 (10 分)

    科幻电影<流浪地球>中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木"刚体洛希极限",地球面临被彻底撕碎的危险.但实际上,这个计算是错误的. ...

最新文章

  1. VMware桌面虚拟化在学校机房的应用
  2. Redmine使用指南
  3. Rman duplicate数据库复制(单系统)
  4. 2018 GitHub最火技术趋势
  5. 第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库
  6. BugkuCTF-Misc:隐写3
  7. JS 清空table
  8. access inner join 数据类型不匹配_用Access开发生产管理系统
  9. PAT练习题:D进制的A+B(C++)
  10. mysql 事务 select_mysql 多个select需要放入一个事务吗?
  11. weiphp 简介--笔记
  12. 【短评】街边小吃虽然味道不错,但是长期只吃零食不吃正餐会让你的孩子营养不良...
  13. 索引的类型及分类,以及唯一索引、聚集索引和非聚集索引的本质区别
  14. 大型强子对撞机再次遭遇断电
  15. 2021最新WordPress安装教程(一):Centos7安装Apache
  16. go mysql打印sql语句
  17. 固高运动卡的使用 4 运动之PT(点位)运动
  18. 团队项目开发编码规范
  19. 运筹说 第42期 | 算法介绍之运输问题
  20. CleanMyMac多功能mac电脑管家清理软件

热门文章

  1. 如何对基因组序列进行注释
  2. linux防火墙策略配置、查看操作实例
  3. 数字营销分析工具:美国今天,中国明天
  4. 深度学习之美——算法的分类
  5. 《漫画计算机原理》读书笔记
  6. 中国语言文学研究是c吗c,中国语言文学考研考什么
  7. python之简易界面编程(模块搭建+界面搭建+功能完成)
  8. TCP/IP详解阅读笔记(一):TCP协议
  9. fiddler+jmeter自动化投票
  10. ORB-SLAM3:一个高精度视觉、视觉惯性和多地图SLAM开源库