标签:正整数 乙级 alt prime image 地址 图片 整数 int
题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744
输入在一行给出正整数N
。
在一行中输出不超过N
的满足猜想的素数对的个数。
20
4
找到所有的从1到N之间的素数,素数相减差值为2时,素数对个数加1。
#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;
}
标签:正整数 乙级 alt prime image 地址 图片 整数 int
原文地址:https://www.cnblogs.com/another-7/p/12167850.html