当前位置: 首页 > news >正文

PAT乙级 素数对猜想(1007)c++实现

题目:

让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

**现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。

先理清大致做题思路,找素数,然后判定前后两个素数大小差值,如果是2就令sum++(sum代表差值为2的素数对个数)

理清好就开始构建具体算法,像这种输入范围1-10^5的题,一般都可以通过打表的方式以空间换时间避免运行超时。因此先通过第一次循环进行打表,是素数的话数组该位置变为1;然后进行第二次循环,这里我用temp1记录上一次b[i]==1的下标,通过判定i-temp1是否等于2来判断满足题目要求的素数对。

注意,在检查该数是否是素数时,循环终止条件最大值不要直接一个n上去,而是应取个绝对值就够了。我就是因为一开始设置为n,一直超时,代码如下:

#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

int find(int n)
{
    int j;
    for(j=2;j<=sqrt(n);j++)
    {
        if(n%j==0)
            return 0;
    }
    return 1;

}

int main()
{
    int i,n,sum=0,temp1=-1,b[100001];

    cin>>n;
    for(i=0;i<100001;i++)
        b[i]=0;
    for(i=2;i<=n;i++)
    {
        if(find(i))//如果是素数
        {
           b[i]=1;
        }
    }


    for(i=1;i<100001;i++)
    {
        if(b[i]==1)
        {
               if(temp1!=-1)//该下标位置取得的素数不是第一个素数,因为素数对要从第二个素数开始才能相减进行判断满不满足差值为2
            {
                if(i-temp1==2)
                    sum++;
            }
            temp1=i;
        }

    }
    cout<<sum<<endl;

    return 0;
}

运行结果如图:

欢迎评论区留言

 觉得该篇文章有用的请不要忘记忘记点击右下角的大拇指~

欢迎大家关注我的公众号:Smooth前端成长记录
公众号同步更新CSDN博客内容,想方便阅读博客的C友可以来关注我的公众号以便获得更优良的阅读体验~

 

相关文章:

  • PAT乙级 说反话(1009)c++新手易懂版
  • 图的深度遍历(邻接表)SCAU c++
  • 图的广度遍历(邻接表)SCAU c++
  • 堆排序 SCAU c++
  • 归并排序(非递归)超详细解答!!
  • PAT乙级 一元多项式求导(1010)详细解答c++
  • C语言课程设计物品竞拍管理(成品版!)
  • 折半查找判定树的画法(较简单易懂!)
  • 剑指 Offer 58 - I. 翻转单词顺序c++解法
  • 2. 两数相加 -力扣c++解法
  • 7.整数反转 - 力扣(LeetCode)
  • 1523. 在区间范围内统计奇数数目 -力扣
  • 9. 回文数 -力扣(leetCode)c++解法
  • 想要学会c++的STL?这一篇文章就足够啦!
  • 455. 分发饼干 -力扣(leetCode)c++贪心算法
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 07.Android之多媒体问题
  • Docker容器管理
  • ES2017异步函数现已正式可用
  • Java 多线程编程之:notify 和 wait 用法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • LeetCode18.四数之和 JavaScript
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React的组件模式
  • sessionStorage和localStorage
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SSH 免密登录
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 搭建gitbook 和 访问权限认证
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 搞机器学习要哪些技能
  • 给Prometheus造假数据的方法
  • 浅谈Golang中select的用法
  • 走向全栈之MongoDB的使用
  • 如何在招聘中考核.NET架构师
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​用户画像从0到100的构建思路
  • #162 (Div. 2)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (3)STL算法之搜索
  • (Python第六天)文件处理
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)kafka实战——kafka源码编译启动
  • (转载)Linux 多线程条件变量同步
  • (轉)JSON.stringify 语法实例讲解
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***php进行支付宝开发中return_url和notify_url的区别分析