PAT(乙级)1007. 素数对猜想
2016-06-23 19:49
267 查看
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
输出样例:
4
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int a[130000];
int isPrime(int n) //判定是否为素数
{
int flag=1;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
{
flag=0;
}
}
return flag;
}
void print() //预处理打表
{
int l=0;
for(int i=2;i<=110000;i++)
{
if(isPrime(i)==1){
a[l++]=i;
}
}
}
int main()
{
int n,i,sum=0;
print();
scanf("%d",&n);
for(i=1;a[i]<=n;i++){
if(a[i]-a[i-1]==2)
sum++;
}
printf("%d\n",sum);
return 0;
}
分析:这题由于数据范围较大,所以进行预处理,将范围内的素数进行找出。之后进行遍历计数。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int a[130000];
int isPrime(int n) //判定是否为素数
{
int flag=1;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
{
flag=0;
}
}
return flag;
}
void print() //预处理打表
{
int l=0;
for(int i=2;i<=110000;i++)
{
if(isPrime(i)==1){
a[l++]=i;
}
}
}
int main()
{
int n,i,sum=0;
print();
scanf("%d",&n);
for(i=1;a[i]<=n;i++){
if(a[i]-a[i-1]==2)
sum++;
}
printf("%d\n",sum);
return 0;
}
分析:这题由于数据范围较大,所以进行预处理,将范围内的素数进行找出。之后进行遍历计数。
相关文章推荐
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- escape(),encodeURI()和encodeURIComponent()区别
- android studio2.0无法关联源码
- Anti-Goldbach's Conjecture
- NKOI 期末赛题D 假期关楼
- 伪元素::after和::before
- 机器学习实战(一)--K近邻算法实现
- java 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 问题 B: Divisible by 3
- Number Sequence
- android学习9#--自定义View之绘制过程分析
- The user specified as a definer (”@sa’%') does not exist 解决方法
- Android照片墙完整版,完美结合LruCache和DiskLruCache
- 初次接受C语言游戏程序感受
- 期末考试-简单的整数划分问题(算法基础 第10周)
- U盘Windows PE 安装系统简易教程
- 世界三大古游牧民族
- Maven最佳实践:Maven仓库
- ELF文件格式解析
- 人资题与答案