PAT乙级 1007. 素数对猜想 (20)
2017-07-01 16:02
260 查看
题目:链接https://www.patest.cn/contests/pat-b-practise/1007
让我们定义 dn 为:dn =
pn+1 -
pn ,其中
pi 是第i个素数。显然有
d1 =1
且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105 ),请计算不超过N的满足猜想的素数对的个数。
方法一:普通方法
#include<iostream>
#include<cmath>
using namespace std;
const int maxn=100002;
bool is_prime(int n){ //素数判断
if(n<=1) return false;
int m=floor(sqrt(n)+0.5);
for(int i=2;i<=m;i++)
if(n%i==0) return false;
return true;
}
int main(){
int n;
while(cin>>n){
int ans=0;
for(int i=3;i<=n;i++){
if(is_prime(i)==true&&is_prime(i-2)==true) ans++;
}
cout<<ans<<endl;
}
return 0;
}
方法二:素数表
让我们定义 dn 为:dn =
pn+1 -
pn ,其中
pi 是第i个素数。显然有
d1 =1
且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105 ),请计算不超过N的满足猜想的素数对的个数。
方法一:普通方法
#include<iostream>
#include<cmath>
using namespace std;
const int maxn=100002;
bool is_prime(int n){ //素数判断
if(n<=1) return false;
int m=floor(sqrt(n)+0.5);
for(int i=2;i<=m;i++)
if(n%i==0) return false;
return true;
}
int main(){
int n;
while(cin>>n){
int ans=0;
for(int i=3;i<=n;i++){
if(is_prime(i)==true&&is_prime(i-2)==true) ans++;
}
cout<<ans<<endl;
}
return 0;
}
方法二:素数表
#include<stdio.h> int prime[100000]={0},primecnt=0; bool num[100000]={false}; void init(){ //预处理素数表 for(int i=2;i<100000;i++){ if(num[i]) continue; prime[primecnt++]=i; for(int j=i*i;j<100000;j=j+i) num[j]=true; } } int main(){ int n; init(); while(scanf("%d",&n)!=EOF){ int cnt=0; for(int i=0;prime[i+1]<=n;i++){ if(prime[i+1]-prime[i]==2) cnt++; } printf("%d\n",cnt); } return 0; }
相关文章推荐
- pat乙级1007. 素数对猜想 (20)——埃氏筛法
- PAT乙级1007. 素数对猜想 (20)
- 乙级 PAT 1007. 素数对猜想 (20)
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
- PAT乙级 1007 素数对猜想 (20)
- PAT 乙级练习题1007. 素数对猜想 (20)
- PAT乙级1007. 素数对猜想(20)
- PAT乙级1007. 素数对猜想 (20)
- PAT 乙级 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20) PAT乙级真题
- 【PAT】(乙级)1007. 素数对猜想 (20)
- PAT乙级1007(C语言)-素数对猜想 (20)
- pat 乙级 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)-PAT乙级
- PAT-乙级-1007. 素数对猜想 (20)
- PAT-乙级-1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)--PAT乙级
- PAT乙级 1007. 素数对猜想 (20)
- PAT 乙级 1007. 素数对猜想 (20)
- PAT乙级 1007. 素数对猜想 (20)