1. 程式人生 > 其它 >Basic Level ----- 1007 素數對猜想 (20分)

Basic Level ----- 1007 素數對猜想 (20分)

技術標籤:PAT Basic Level資料結構

前言

環境:C++(g++6.5.0)

題目

在這裡插入圖片描述

輸入格式:

輸入在一行給出正整數N。

輸出格式:

在一行中輸出不超過N的滿足猜想的素數對的個數。

輸入樣例:

20

輸出樣例:

4

華點

  1. 最主要的還是判斷素數的方法;
  2. 判斷兩個素數間相差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; }