Basic Level ----- 1007 素數對猜想 (20分)
阿新 • • 發佈:2020-12-15
技術標籤:PAT Basic Level資料結構
前言
環境:C++(g++6.5.0)
題目
輸入格式:
輸入在一行給出正整數N。
輸出格式:
在一行中輸出不超過N的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
華點
- 最主要的還是判斷素數的方法;
- 判斷兩個素數間相差2的方法:我使用flag記錄,上一個相差2的數是否為素數,如果是,且當前的數也是素數,則素數對+1;
程式碼
/*1007 素數對猜想 (20分)*/
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime (int n)
{
if(n==2||n==3||n==5||n==7) return true;
if(n%2==0) return false;
for(int i=3;i<=(int)sqrt(n);i+=2)
{
if(n%i==0) return false;
}
return true;
}
int main()
{
int flag=0; //用於記錄上一個判斷值,是否為素數
int n,count;
cin>>n;
flag=1;
count=0;
for(int i=5;i<=n;i+=2)
{
if(isPrime (i))
{
if(flag==1)
count++;
flag=1;
}else
flag=0;
}
cout<<count;
return 0;
}