题目地址: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; }