PAT B1007 素数对猜想 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
PAT B1007 素数对猜想 (20 分)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
讓我們定義d?n??為:d?n??=p?n+1???p?n??,其中p?i??是第i個(gè)素?cái)?shù)。顯然有d?1??=1,且對(duì)于n>1有d?n??是偶數(shù)。“素?cái)?shù)對(duì)猜想”認(rèn)為“存在無(wú)窮多對(duì)相鄰且差為2的素?cái)?shù)”。
現(xiàn)給定任意正整數(shù)N(<),請(qǐng)計(jì)算不超過(guò)N的滿足猜想的素?cái)?shù)對(duì)的個(gè)數(shù)。
輸入格式:
輸入在一行給出正整數(shù)N。
輸出格式:
在一行中輸出不超過(guò)N的滿足猜想的素?cái)?shù)對(duì)的個(gè)數(shù)。
輸入樣例:
20輸出樣例:
4 #include <stdio.h> #include <algorithm> #include <string> #include <map> #include <iostream> #include <stack> #include <math.h> using namespace std; const int maxn = 100010; int index[maxn] = { 0 }; bool isPrime(int i){for (int k = 2; k <= sqrt(i); k++){if (i%k == 0)return false;}return true; } int main(){int n, count = 0;cin >> n;if (n == 1 || n == 2){cout << '0';return 0;}for (int i = 2; i <= n; i++){if (isPrime(i)){index[i] = 1;}}for (int i = 2; i <= n-2; i++){if(index[i]==1 && (index[i + 2] - index[i] == 0))count++;}cout << count;system("pause"); }注意點(diǎn):素?cái)?shù)的判定一直是一個(gè)重點(diǎn),本以為判斷到平方根也會(huì)超時(shí),結(jié)果沒(méi)有還算好,有時(shí)間要去看一下時(shí)間復(fù)雜度最低的素?cái)?shù)判定方法。這里我是把所有素?cái)?shù)都存起來(lái),用了hash,也可以生成一個(gè)判斷一個(gè),可以省點(diǎn)內(nèi)存。
轉(zhuǎn)載于:https://www.cnblogs.com/tccbj/p/10359177.html
總結(jié)
以上是生活随笔為你收集整理的PAT B1007 素数对猜想 (20 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Scrapy 框架入门
- 下一篇: json字符串与java对象的相互转换(