PAT(乙级)1007
来源:互联网 发布:淘宝助理菜鸟打印组件 编辑:程序博客网 时间:2024/06/06 00:40
1007. 素数对猜想 (20)
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 10^5),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 10^5),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
注意:我们从PAT网站上将题目复制到自己的编辑器上的时候,可能会出现一些问题,比如这道题目的(10^5复制到我的notepad++上的时候,变成了105,结果就是数组溢出,导致段错误,害我找了半天)。
分析:首先判断<100000的数字之中的素数,将他们保存在数组之中。然后判断相邻的素数之差是不是2即可。
代码如下:
#include<stdio.h>#include<math.h>#include<stdlib.h>int isprime(long n);int main(void){ long n,i,j,k = 0; long *num = (long *)malloc (sizeof(long)*50000); scanf("%Ld",&n); if(n < 100000) { for(i = 2;i <= n;i++) { if(isprime(i)) { num[k++] = i; } } } j = 0; for(i = k ; i >= 1; i--) { if(2 == num[i] - num[i-1]) { j++; } } printf("%Ld",j); return 0;}int isprime(long n){ long j; for(j = 2; j <= sqrt(n); j++) { if(0 == n % j) { return 0; } } return 1;}
阅读全文
0 0
- PAT(乙级)1007
- PAT乙级(Basic)题库---1007
- PAT乙级1007(编译未通过)
- PAT乙级1007
- PAT 乙级 1007
- PAT 乙级 1007
- PAT 乙级 1007
- pat乙级1007
- PAT 乙级 1007
- PAT.乙级练习题.1007
- PAT(乙级)1001
- PAT(乙级)1002
- PAT(乙级)1004
- PAT(乙级)1005
- PAT(乙级)1006
- PAT(乙级)1009
- PAT(乙级)1010
- PAT(乙级)1011
- 图片浏览器
- SQL 查询某字段不为空
- R语言实现决策树算法
- python学习笔记1 数据类型
- 记一次SQL踩坑之旅
- PAT(乙级)1007
- 食物链_KEY
- ASP.NET使用CodeFirst更新mysql数据库是出错的解决方案
- Spring Cloud 学习之旅 --- 服务的消费
- webgate 整体技术说明 + 代码目录分析
- mysql并行复制降低主从同步延时的思路与启示
- while循环嵌套练习
- eclipse maven 搭建【SSM】项目
- 【树形dp+前向星】Godfather POJ