码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C/C++语言100题练习计划 97——素数对


    名人说:博学之,审问之,慎思之,明辨之,笃行之。——《中庸》
    进度:C/C++语言100题练习计划专栏,目前97/100

    一、问题呈现

    1.问题描述

    Problem Description

    定义两个相差为 2 2 2 的素数称为素数对,如 5 5 5 和 7 , 17 7,17 7,17 和 19 19 19 等,要求找出所有两个数均不大于 n n n 的素数对。

    2.输入输出

    Input

    一个正整数 n n n。 1 ≤ n ≤ 10000 1 \le n \le 10000 1≤n≤10000。

    Output

    所有小于等于 n n n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出 empty。

    3.测试样例

    样例1️⃣
    Sample Input

    10
    

    Sample Output

    3 5
    5 7
    

    样例2️⃣
    Sample Input

    100
    

    Sample Output

    3 5
    5 7
    11 13
    17 19
    29 31
    41 43
    59 61
    71 73
    

    样例3️⃣
    Sample Input

    3
    

    Sample Output

    empty
    

    二、源码实现

    #include
    using namespace std;
    
    bool isPrime(int x)//判断是否是素数的函数,返回0代表不是素数,返回1代表是素数
    {
    	//特断
        if(x<=1)
    		return 0;
        if(x==2)
    		return 1;
    		
        //枚举可能的因数
        for(int i=2;i*i<=x;i++)
        {
        	//能被整除,存在除了1与自身以外的因数,不是素数
    		if(x%i==0)
    		{
    			return 0;//返回0作为标记
    		}
    	}
    	
        //否则就一定是素数,返回1作为标记
        return 1;
    }
    
    int main()
    {
        int n;
        cin>>n;
        bool flag=0;//flag代表是否有素数对
        
        //i循环到n-2是为了防止另一个数超(i+2)过n的范围
        for(int i=1;i<=n-2;i++)
    	{
    		if(isPrime(i)&&isPrime(i+2))//如果找到素数对
    		{
    		    cout<<i<<" "<<i+2<<endl;//输出素数对
    		    flag=1;//标记为素数对
    		}
    	}
            
            
        if(!flag)cout<<"empty"<<endl;//没有找到素数对,输出empty
        return 0;
    }
    

    ★关于本题思路:

    ①首先,这道题由于 N 的范围不大,可以使用最简单的方法判断素数。

    素数 指除了 1 和它本身以外不再有其他因数的自然数。
    那我们可以直接枚举这个数所输入数字的可能的因数,如果除了 1 和它本身以外还有其他因数,那么它就不是素数了。

    ②其次,由于因数总是成对出现的,所以只需要枚举到这个数的算术平方根向下取整就可以了。

    对于每一个在 1 到 n−2 之间的整数,如果它自身与它加 2 都是素数,那么它们就是一对素数对,将其输出即可。

    ③对了,不要忘了 1 不是素数, 2 是素数,需要特别判断一下。

    明白了这些之后,应该就没啥大问题了,可以尝试编写程序了。

    三、测试结果

    100
    3 5
    5 7
    11 13
    17 19
    29 31
    41 43
    59 61
    71 73
    
    --------------------------------
    Process exited after 1.355 seconds with return value 0
    请按任意键继续. . .
    
    

    Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
    如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心

  • 相关阅读:
    WiFi Association&Omnipeek抓包分析
    北大惠普金融指数-匹配企业绿色创新指数2011-2020年:企业名称、年份、行业分类等多指标数据
    【Java-----IO流(八)之对象专属流详解】
    阿里云账户新手实名认证教程(超简单秒通过)
    基于python flask的旅游景点评论数据可视化大屏实现,包括数据采集
    蓝桥杯 (饮料换购,C++)
    数据结构---第七章查找---顺序查找和折半查找---应用题
    [Leetcode]9. 回文数
    2023数学建模国赛E题黄河水沙监测数据分析完整代码分析+处理结果+思路文档
    ubuntu系统下mysql重置密码和修改密码操作
  • 原文地址:https://blog.csdn.net/qq_51646682/article/details/127099066
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号