1007. 素数对猜想 (20)——素数判断算法
来源:互联网 发布:sql select 嵌套 编辑:程序博客网 时间:2024/05/11 17:13
1、题目描述
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:20输出样例:
4
2、思路分析
首先,此题涉及素数判断,可以编写bool IsPrime(int x),用来完成素数判断的功能;
然后,直接循环判断素数对个数即可,为了使计算时间尽量低,循环中只处理奇数,且每个奇数保证最多只判断一次。
3、C++代码
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>#include<vector>#include<string>#include<stack>#include<queue>#include<math.h>#include<map>using namespace std;int N,Count;void Input(){scanf("%d",&N);}bool IsPrime(int x){int l=sqrt((double)x);for(int i=2;i<=l;i++)if(x%i==0)return false;return true;}void Process(){Count=0;int i=5;while(i<=N){if(IsPrime(i)){ //判断紧跟第一个素数后面的奇数是否为素数Count++;i+=2;}else{ //从小到大找到第一个素数i+=2;while(!IsPrime(i))i+=2;i+=2;}}}void Display(){printf("%d\n",Count);}int main(){//while(true){Input();Process();Display();//}return 0;}
0 0
- 1007. 素数对猜想 (20)——素数判断算法
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- Android端小米推送Demo解析和实现方法
- Swift3.0 数字格式化(金额逗号分隔)
- linux 下导出导入mysql数据库
- 守护进程
- RMQ 区间最值的问题
- 1007. 素数对猜想 (20)——素数判断算法
- Kernel启动流程源码解析 5 start_kernel 下
- Linux下 /proc目录介绍
- 【转自知乎】简单明了的解释傅里叶变换
- 设计模式之单例模式(Singleton)
- Activity的生命周期
- 《Java 线程编程》学习笔记5
- 服务器网络编程模型
- Java Web项目部署到阿里云服务器