【PAT乙级真题】1007 素数对猜想(分数 20)(C++)
C++ 20 真题 PAT 素数 分数 乙级 猜想
2023-09-27 14:28:31 时间
【PAT乙级真题】1007 素数对猜想(分数 20)(C++)
题目描述:
1007 素数对猜想(分数 20)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
思路分析:
在做这道题时,菜菜子前期总是最后运行时间超时,后来发现主要是判断素数时的算法超时了
将判断的范围从最开始的折半改成取平方根后解决了这个问题
代码实现:
#include <iostream>
#include <cmath>
using namespace std;
/*判断是否是素数*/
bool isPrimeNum(int num) {
for (int i = 1; i <= sqrt(num); i++) //范围取到num的平方根
{
if (i != 1 && num % i == 0) return false;
}
return true;
}
int main() {
int n;
cin >> n;
int pre_num = 1, count = 0; //pre_num用来记录前一个素数,count用来记录素数对个数
for (int i = 2; i < n + 1; i++)
{
if (isPrimeNum(i)) {
if (i - pre_num == 2) count++;
pre_num = i;
}
}
cout << count << endl;
return 0;
}
相关文章
- C++经典20题型,满满知识,看这一篇就够了(含答案)
- C++中的继承
- [c++] constexpr and literal class
- C++——多维数组动态开辟与释放
- [C++]头文件<algorithm>
- [C++]PAT乙级1008.数组元素循环右移问题 (20/20)
- [C++]PAT乙级1007.素数对猜想 (20/20)
- [C++]PAT乙级1004. 成绩排名 (20/20)
- C++基础代码--20余种数据结构和算法的实现
- VC++记录
- 12届蓝桥杯青少组6月20日c++高级
- Paddle推理库(Inference Library)编译爬坑记 C++ GPU版【看完编译畅通无阻】
- 【C/C++】exit不兼容解决方案
- 10分钟速览 C++20 新增特性
- C++006-C++分支结构练习题
- 50个c/c++源代码网站
- 【PAT乙级真题】1008 数组元素循环右移问题(分数 20)(C++)
- 【PAT乙级真题】1004 成绩排名 (20 分)(C++)