PAT (Basic Level) Practice (中文):1007 素数对猜想(20分)
2019-01-26 16:26
246 查看
1007 素数对猜想 (20 分)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数
N(<105),请计算不超过
N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数
N。
输出格式:
在一行中输出不超过
N的满足猜想的素数对的个数。
输入样例:
[code]20
输出样例:
[code]4
作者: CHEN, Yue
单位: 浙江大学
时间限制: 200 ms
内存限制: 64 MB
代码长度限制: 16 KB
解析:刚开始使用的是双层循坏,但是提交之后显示超时,只得到了一半的分数,这说明我的算法有问题,于是改进了解题思路。正确代码如下。
#include<bits/stdc++.h>
using namespace std;
int prim(int n){ //判断n是否为素数的函数,若是素数返回1,否则返回0.该函数也可以写成bool类型,那样返回值为true或false
int i;
if(n<1) return 0;
if(n==2) return 1;
for(i=2;i<=sqrt(n);i++){
if(n%i==0) return 0;
}
return 1;
}
int main(){
int i,n,num=0; //n为输入的那个正整数,num用来计数
cin>>n;
for(i=4;i<=n;i++){
if(prim(i)&&prim(i-2)) //若数值i和i-2都是素数则满足条件,num加一
num++;
}
cout<<num<<endl;
return 0;
}
相关文章推荐
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20) C语言
- PAT乙级真题及训练集 PAT (Basic Level) Practise (中文)1007. 素数对猜想
- Pat(Basic Level)Practice--1007(素数对猜想)
- PAT (Basic Level) Practise (中文) 1007. 素数对猜想 (20)
- PAT (Basic Level) Practise (中文) 1007素数对猜想 (20)
- PAT (Basic Level) Practise (中文)- 1007. 素数对猜想 (20)
- PAT (Basic Level) Practice 1007 素数对猜想
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20)
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20)
- PAT(Basic Level)_1007_素数对猜想
- PAT (Basic Level)1007. 素数对猜想
- PAT Basic Level 1007. 素数对猜想 (20)
- PAT (Basic Level) Practise-1007. 素数对猜想 (20)
- 【C++】浙大PAT (Basic Level)1007. 素数对猜想 (20)
- PAT Basic Level 1007 素数对猜想 (20 分)
- PAT BASIC LEVEL 1007. 素数对猜想 (20)
- PAT (Basic Level) 1007 素数对猜想 (C++)
- PAT(basic level) 1007 素数对猜想
- 浙江大学PAT---Basic Level---1007----素数对猜想
- PAT 乙级 Basic Level 1007. 素数对猜想(素数筛法)