題目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744ios
輸入在一行給出正整數N
。數組
在一行中輸出不超過N
的知足猜測的素數對的個數。spa
20
4
找到全部的從1到N之間的素數,素數相減差值爲2時,素數對個數加1。code
#include<iostream> #include<math.h> using namespace std; int main() { int number = 0; cin >> number; int prime[number]; int index = 0; if (number < 3) { cout << 0 << endl; } else { // 外層遍歷,從1到須要判斷的數 prime[index++] = 1; prime[index++] = 2; for (int i = 3; i <= number; i += 2) { // 若是是除了2 以外的偶數,都不是素數 if (i > 2 && i % 2 == 0) { continue; } bool flag = true; // 須要判斷i是否爲素數的方式,若是有從 3到 (<=)i 的平方根之間的數j, // 能夠被j整除,則i不是素數 , int upperLimit = sqrt(i); for (int j = 3; j <= upperLimit; j++) { // 知足整除,不是素數 if (i % j == 0) { flag = false; break; } } // 是素數,存儲到prime數組中 if (flag) { prime[index++] = i; } } // 統計相差爲2 的素數對 int primeCounter = 0; for (int i = 1; i < index; i++) { if (prime[i] - prime[i-1] == 2) { primeCounter++; } } cout << primeCounter << endl; } return 0; }