讓咱們定義dn爲:dn=pn+1−pn,其中pi是第i個素數。顯然有d1=1,且對於n>1有dn是偶數。「素數對猜測」認爲「存在無窮多對相鄰且差爲2的素數」。html
現給定任意正整數N
(<),請計算不超過N
的知足猜測的素數對的個數。java
輸入在一行給出正整數N
。ios
在一行中輸出不超過N
的知足猜測的素數對的個數。flex
20
4
注意,題目要求是相鄰的兩個素數相差爲2,儘管1和3都是素數且相差2,但並非相鄰的,由於1 2 3都是素數,1和3並不相鄰,因此從3 5開始算是第一個素數對spa
1 #include <iostream> 2 using namespace std; 3 4 bool isPrime(int n) 5 { 6 for (int i = 2; i * i <= n; ++i) 7 { 8 if (n%i == 0) 9 { 10 return false; 11 } 12 } 13 return true; 14 } 15 16 int main() 17 { 18 int N; 19 cin >> N; 20 int count = 0; 21 for (int i = 5; i <= N; ++i) 22 { 23 if (isPrime(i) && isPrime(i - 2)) 24 { 25 count++; 26 } 27 } 28 cout << count; 29 return 0; 30 }
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int num = input.nextInt(); 7 int count = 0; 8 if(num < 5){ 9 count = 0; 10 } 11 for(int i = 3; i <= num - 2; i++){ 12 if(isPrime(i) && isPrime(i + 2)){ 13 count++; 14 } 15 } 16 System.out.print(count); 17 } 18 static boolean isPrime(int n){ 19 for(int i = 2; i * i <= n; i++){ 20 if(n % i == 0) 21 return false; 22 } 23 return true; 24 } 25 }