1007 素数对猜想

一、题目

让我们定义 dnd_ndn​ 为 dn=pn+1−pnd_n=p_{n+1}-p_ndn​=pn+1​−pn​,其中​​ pip_ipi​ 是第 iii 个素数。显然有 d1=1d_1=1d1​=1,且对于 n>1n>1n>1有 dnd_ndn​ 是偶数。“素数对猜想” 认为 “存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105)(<10^5)(<105),请计算不超过N的满足猜想的素数对的个数。

二、输入输出

输入格式

输入在一行给出正整数N

输出格式

在一行中输出不超过N的满足猜想的素数对的个数。

三、样例

输入样例

20

输出样例

4

四、题目分析

简单的按照模拟的方法,遍历完所有数值对,对每个数值进行判断,可以解决。但是效率不高,可以进行如下优化:

  • 所有的素数对都为奇数,循环步长设为2;
  • 最小的素数对为(3,5),循环初始值设为5;
  • 无需对同一个数值进行两次素数判断,可以设置两个布尔变量保存上一数值的判断结果。

五、代码

#include <bits/stdc++.h>
using namespace std;
int main()
{int count=0;int n;cin>>n;bool num1=true,num2=true;for(int i=5;i<=n;i=i+2){num2=true;for(int j=2;j<sqrt(i)+1;j++){if(i%j==0){num2=false;break;}}if(num1&&num2)count++;num1=num2;}cout<<count;return 0;
}

六、总结

  • 素数的判断:

    for (int j = 2; j < sqrt(i) + 1; j++)
    {if (i % j == 0){num2 = false;break;}
    }
    

    循环从2开始,到sqrt(i) + 1,防止浮点误差导致将一些完全平方数(除1和自身以外只含有一个质数因子,如9、25…)判断为素数。
    例如 i = 9
    sqrt(i)2.99999,若是只循环至sqrt(i),无法对因数3进行判断,因此将9误判为素数。

PAT (Basic Level) Practice1007 素数对猜想相关推荐

  1. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  2. 卡拉兹(Callatz)猜想,PAT(Basic Level) Practise NO.1001

    PAT(Basic Level) Practise NO.1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半. 这样 ...

  3. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  4. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  5. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  6. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  7. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

  8. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  9. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

最新文章

  1. 多 LDAP 目录服务器的 FileNet P8 系统介绍和配置实例
  2. Tomcat启动之异常java.lang.IllegalStateException
  3. 【Python教程】读写ini配置文件的详细操作
  4. 对话系统(二)-普通神经网络
  5. NOIP2011 铺地毯
  6. 纯Javascript实现Windows 8 Metro风格实现
  7. projecteuler_problem11
  8. Tableau豆瓣电影数据项目实战练习3
  9. ES6数组得扩展与对象的扩展
  10. Redhat、Fedora、CentOS、OEL之间的关系与不同。
  11. 购买计算机设备计入什么科目,企业购买设备计入什么会计科目?附会计分录
  12. linux系统python中的列表 || python中的集合
  13. pycharm遇坑指南(win32gui)
  14. 如何理解混淆矩阵,以及预测少数类的评估指标?
  15. 无线网460王者荣耀服务器,王者荣耀:如何解决大批玩家网络460?骨灰级玩家给出了最终方案...
  16. ev4视频转换为mp4工具使用教程
  17. LDO和BUCK降压稳压器对比
  18. 小孩发烧请慎用抗病毒类药物!
  19. moudle.txt
  20. 谷歌新系统 fuchsia

热门文章

  1. diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
  2. 后端返回list前端如何处理_前端、后端、全栈是什么?薪资前景如何?
  3. linux php 入侵,入侵linux教程 - 冷漠 ' Blog - Focus on Information Security !
  4. python selenium安装失败_python:学习selenium遇到的坑
  5. android socket第三方库,OkSocket 一个Android轻量级Socket通讯框架
  6. iframe调用父页面方法_5.1 vue中子组件调用父组件的方法,务必理解自定义事件的重要性...
  7. oracle静态,oracle静态sql和动态sql
  8. python csv数据所在行_使用python获取csv文本的某行或某列数据的实例
  9. qt5不能添加新文件_VS2017配置Qt5.9教程
  10. python大文件去重_python大ip文件排重