题目

让我们定义dn为:dn =pn+1 −pn ,其中p​i​​ 是第i个素数。显然有d​1​​ =1,且对于n>1有d​n​​ 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105 ),请计算不超过N的满足猜想的素数对的个数。

分析

首先,需要判断小于N的数哪些是素数;然后用数组存起来;接着,循环访问该数组,用一个变量count记录素数对个数;最后输出count即可。

判断素数两种方法

  • 用n除以2~n-1的数,如果余数都不为0,即为素数
  • 用n除以2~sqrt(n)的数,如果余数都不为0,即为素数\

方法选择

  • 第一种最直接也最简单,但是当数据较大时,花费时间过久
  • 第二种需要调用库函数sqrt,需要类型转换,还要注意个别数值能否满足
  • 基于效率考虑,选择第2种

AC代码

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{int i,j,n,count=0,count_sushu=0;cin>>n;int *sushu=(int *)malloc(n*sizeof(int));//动态创建n个int大小的内存,sushu指向该块内存首地址。//int sushu[n];//C99标准,旧版本编译器可能不支持/*素数判断方法需从2开始,题目给的N是正整数包含1,再结合素数对的定义,分为两种情况分别判断。*/if(n<=3)//此时素数对个数为0{}else{for(i=2;i<=n;i++){int temp=i;if(temp==2){count_sushu++;sushu[count_sushu-1]=temp;}else{int temp2=(int)sqrt((double)temp)+2;//double转为int类型时,会有精度丢失for(j=2;j<temp2;j++){if(temp%j==0){break;}if(j==temp2-1){count_sushu++;sushu[count_sushu-1]=temp;}}}}}for(i=0;i<count_sushu;i++){if(i+1<count_sushu){if((sushu[i+1]-sushu[i])==2){count++;}}}cout<<count;return 0;
}

有任何问题,欢迎在评论区留言,博主每天都会看的哟!

更多题解
pat 乙级 题解汇总(持续更新)(C++)

pat乙级 1007 素数对猜想(C++)相关推荐

  1. [PAT乙级]1007 素数对猜想

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素数对猜想"认为" ...

  2. C++ PAT 乙级 1007——素数对猜想

    题目详情 让我们定义 dnd_ndn​ 为 dn=pn+1−pnd_n = p_{n + 1} - p_ndn​=pn+1​−pn​,其中 pip_ipi​ 是第 i 个素数.显然有 d1=1d_1 ...

  3. PAT乙级(1007 素数对猜想)

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素数对猜想"认为" ...

  4. PAT乙级 1007 素数对猜想

    一.题目描述 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素数对猜想" ...

  5. PAT(乙级) 1007 素数对猜想 (20 分)(C语言)

    分析:这道题在数字比较大的时候容易超时,需要更简单的算法,我这里采用了最原始最朴素的算法来处理,为了让所有测试点通过对源代码做了一点点修改 #include<stdio.h> int is ...

  6. 【PAT】1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想" ...

  7. C++学习之路 | PTA乙级—— 1007 素数对猜想 (20分)(精简)

    1007 素数对猜想 (20分) 让我们定义d ​n ​​ 为:d ​n ​​ =p ​n+1 ​​ −p ​n ​​ ,其中p ​i ​​ 是第i个素数.显然有d ​1 ​​ =1,且对于n> ...

  8. PAT 乙级 1007(C++)

    PAT 乙级 1007 题目 1007 素数对猜想 (20 分) 让我们定义 d n d_n dn​为: d n = p n + 1 − p n d_n =p_{n+1}−p_n dn​=pn+1​− ...

  9. PAT-B 1007.素数对猜想

    1007. 素数对猜想 让我们定义 $d_n$ 为:$d_n = p_{n+1} - p_n$,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 $d_n$ 是偶数."素数对 ...

最新文章

  1. 两个小模型就能吊打大模型!北大校友、谷歌华人一作「模型集合」,CNN、Transformer都适用!...
  2. top---报错terminal is not big enough
  3. Java 8中stream相关用法
  4. 编译时MSIL注入--实践Mono Cecil(1)
  5. 使用Xerte创建简单的在线学习资料的指南
  6. bzoj2843极地旅行社题解
  7. oracle 数据库基础配置,Oracle数据库网络服务配置基础、SQL编程详解-Oracle
  8. Json文件转Map(四)之代码
  9. 可见面判别算法---深度排序算法
  10. java我的世界损坏的种子,我的世界:5分钟让你通关游戏的种子,大神用这种子破了世界纪录...
  11. 《解密家用路由器0day漏洞挖掘技术》学习笔记
  12. 还在为满意的渐变色发愁吗?10+个网站帮你解决烦恼
  13. 淘宝/天猫获取商品历史价格信息 API 返回值说明
  14. python解析xml读取指定属性_python批量修改xml某些内容和属性
  15. 虚幻3和虚幻4_如何成为虚幻的自动化专家
  16. ORB_SLAM系列总结
  17. 桌上有一空盘,最多允许存放两只水果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果。用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步。
  18. starting to launch local task to process map join maximum memory =1029701632 的原因
  19. 微软服务器的根目录在哪里,如何:查找 Web 应用程序根目录
  20. python计算ema_python – 添加一个列(EMA),它是pandas中先前新列值的结果

热门文章

  1. 土城战役_避免使用FOR –反假战役
  2. 通过Java 8流使用Oracle AQ
  3. 睡觉时:新增的Java 8新增功能
  4. Java 8 Friday:让我们弃用那些旧版库
  5. 构建器模式:适用于代码,适用于测试
  6. 接触Jenkins(Hudson)API,第1部分
  7. OSGi简介–模块化Java
  8. 在5分钟内在MacOSX Lion中设置JAVA_HOME,MAVEN_HOME,ANT_HOME
  9. python的setting怎么找_Python的Django框架中settings文件的部署建议
  10. guid会重复吗_知网查重会查重表格吗