【PAT乙级】1007 素数对猜想 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
【PAT乙级】1007 素数对猜想 (20 分)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744
埃氏篩法
#include<cstdio> #include<iostream> using namespace std; int ans=0; int n; int a[100005]; void print() {for(int i=2;i<=n;i++){if(!a[i])for(int j=i+i;j<=n;j=j+i) a[j]=true;} } int main(void) {cin>>n;print();for(int i=2;i<=n-2;i++){if(!a[i]&&!a[i+2]) ans++;}cout<<ans<<endl;return 0; }線性篩
#include<cstdio> #include<iostream> using namespace std;int ans=0; int n; int a[100005]; int primes[100005],cnt; void print() {for(int i=2;i<=n;i++){if(!a[i]) primes[cnt++]=i;for(int j=0;primes[j]<=n/i;j++) {a[primes[j]*i]=true;if(i%primes[j]==0) break;}} } int main(void) {cin>>n;print();for(int i=2;i<=n-2;i++){if(!a[i]&&!a[i+2]) ans++;}cout<<ans<<endl;return 0; } #include<bits/stdc++.h> using namespace std; int ans; bool check(int x) {for(int i=2;i<=x/i;i++) if(x%i==0) return false;return true; } int main(void) {int n; cin>>n;for(int i=2;i<=n;i++) if(check(i)&&check(i+2)&&(i+2)<=n) ans++;cout<<ans;return 0; }總結(jié)
以上是生活随笔為你收集整理的【PAT乙级】1007 素数对猜想 (20 分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PAT乙级】 1010 一元多项式求导
- 下一篇: 【PAT乙级】1008 数组元素循环右移