c++版本回文质数 Prime Palindromes 题解(洛谷)

9efbcbc3d25747719da38c01b3fa9b4f.gif

 c语言中的小小白-CSDN博客c语言中的小小白关注算法,c++,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm=1001.2014.3001.5343

给大家分享一句我很喜欢我话:

知不足而奋进,望远山而前行!!!

铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!!

今天我们更新了c++回文质数内容,

🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝互三互三!!!!!

什么是回文质数?

其实通俗的来说就是一个既是回文数,又是指数的数

回文质数是指从左到右和从右到左读都相同的质数。换句话说,这是一种同时具备回文性质和质数属性的数字。例如,121、131、313都是回文质数,因为它们不仅是质数(只能被1和自身整除),而且从左到右和从右到左读都是一样的。

在寻找回文质数时,需要同时检查一个数字是否是质数和是否是回文数。这涉及到分别检查数字是否能被其他整数整除(质数检查)和数字的各个数字是否对称(回文数检查)

首先我们看一下题

这就是这个题的大致内容,下面我们来求解一下这道题

带你用c++实现这个题

顾名思义,先回文再质数。搜狗百科解释如下:回文素数是一个既是素数又是回文数的整数。回文素数与记数系统的进位制有关。回文素数是指,对一个整数n(n>11)从左 向右和从右向左读其结果值相同且是素数,即称n为回文素数。除了11,偶数位的数不存在回文质数。(以前不知道那现在知道了)。4位,6位,8位…… 不存在回文质数。因为四位及四位以上的偶数位的回文数都可以被11整除,故不存在偶数位的回文质数。最初几个回文素数:11,101 ,131,151,181,191,313,353,373 383,727,757,787,797,919,929……
两位回文素数1个,三位回文素数15 个,五位回文素数93个,七位回文素数668 个,九位回文素数5172个。

启发
本题要找出5至1亿内的回文质数,两位的只有11,三位, 五位,七位,才有回文质数,九位的话,1亿显然不是。所以可以缩小些范围,直接检查位数,减少用时。

下面,我们将会建立三个函数,用于检查一个数是否是回文质数,当然,为了节省时间,我们检查的顺序也是有一定规律的

我们将会先检查或者数的位数,因为一个数如果是回质数,那么这个数肯定是奇数位(除了11),

因此,如果一个数是四位数或者六位数,我们将忽略它,我们建一个函数check1用于检查:

bool check1(int n)
{if ((1000 <= n && n <= 9999) || ( 100000<=n && n <= 999999))return 0;return 1;//如果属于这些范围,即使是回文数,也不可能是质数
}

如果符合的话,然后我们将进行下一步,下一步我们将写一个代码用于检查一个数是否是回文数,我们先将其转化为一个字符串,然后将字符串的前面的与后面的一一对应,就可以求出这个数是否符合:

bool check2(int n)
{int arr[20];int i = 0;while (n > 0){arr[i] = n % 10;n /= 10;i++;}for (int j = 0; j < i / 2; j++){if (arr[j] != arr[i - j - 1])return 0;	}return 1;
}

如果符合这一个,我们将继续向下进行,下面我么将检查一个数是否是质数,质数(prime number)是指除了1和自身以外,不能被其他正整数整除的大于1的整数。换句话说,质数只有两个正因数:1和它自身。例如,2、3、5、7、11等都是质数。如果一个数大于1并且不是质数,则它被称为合数。

然后我们写下以下代码用于检查:

bool check3(int n)
{if (n == 2)return 1;for (int i = 2; i <= sqrt(n); i++){if (n % i == 0)return 0;}return 1;
}

这样我们便能得到规定区域内的所有回文质数了!

全部代码

#include<iostream>using namespace std;
int l, r;
bool check1(int n)
{if ((1000 <= n && n <= 9999) || ( 100000<=n && n <= 999999))return 0;return 1;//如果属于这些范围,即使是回文数,也不可能是质数
}bool check2(int n)
{int arr[20];int i = 0;while (n > 0){arr[i] = n % 10;n /= 10;i++;}for (int j = 0; j < i / 2; j++){if (arr[j] != arr[i - j - 1])return 0;	}return 1;
}bool check3(int n)
{if (n == 2)return 1;for (int i = 2; i <= sqrt(n); i++){if (n % i == 0)return 0;}return 1;
}int main()
{scanf("%d%d", &l, &r);if (l == 2)printf("2\n");if (l % 2 == 0)l += 1;r = min(9999999, r);for (int i = l; i <= r; i+=2){if (check1(i) == 0)continue;if (check2(i) == 0)continue;if (check3(i) == 0)continue;printf("%d\n", i);}return 0;
}

这里主函数中的2我们要特殊对待,因为2是回文质数,但它不能作为l,因为为了节省时间,我们要将l设为奇数才可以,如果是2,就输出然后+1,如果是其他偶数,就+1,因为其他偶数不可能是回文质数。

再有一个点就是你会发现我在代码中使用的是scanf和printf,没用cin和cout,因为前者的运行速度要比后者快一些,为了防止超时,所以我们用的scanf和printf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人才推荐 | 毕业于美国凯斯西储大学的博士,专业知识广泛

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

目标检测——监控下打架检测数据集

一、简述 首先&#xff0c;监控下打架检测是维护公共安全的重要手段。在公共场所、学校、监狱等地方&#xff0c;打架事件往往难以避免。通过安装打架检测监控系统&#xff0c;可以实时监控并准确识别打架事件&#xff0c;及时采取必要的应对措施&#xff0c;有效地减少打架事…

[数据集][目标检测]变电站缺陷检测数据集VOC+YOLO格式8307张17类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8307 标注数量(xml文件个数)&#xff1a;8307 标注数量(txt文件个数)&#xff1a;8307 标注…

Kubernetes 安全秘籍:5 个你必须知道的知识点

Kubernetes 安全和身份验证是确保集群和应用安全的关键。今天将深入探讨 Service Account、身份验证和RBAC的关键概念和实践&#xff0c;帮助您构建安全可靠的应用。今天本文将着重于安全相关的内容&#xff0c;并提供更详细的示例和配置说明&#xff0c;帮助兄弟们更深入地理解…

java-初级项目实战-(swing篇)-羊了个羊(动态交互,)

判断是否压牌 蓝框为b方格的宽度和高度的2倍, 判断t方格是否压住b方格,就要保证t方格的左上的黑点始终在蓝框内 即t的 x坐标(x1,x2)之间,y(y1,y2)之间 t方格的黑点设置为(x,y) x1的x即为b的左上点x-其宽度 x2的x即为b左上点x其宽度 y1的y即为b的左上点y-其高度 y2的y即为b的左上…

JVM-1

目录 1.基础知识 1.栈 2.本地方法栈 3.程序计数器 4.堆 5.方法区 6.JVM内存可见性 2.虚拟机类加载机制 1.加载 2.验证 3.准备 4.解析 5.初始化 6.使用 7.卸载 1.基础知识 JVM内存模型&#xff08;5种&#xff09;&#xff1a;栈&#xff0c;本地方法栈&#xff…

使用Git将代码上传至代码托管平台GitCode

使用像GitLbi、GitHub、Gitee等代码托管平台用于版本控制非常滴方便&#xff0c;能够跟踪代码的变化和历史记录&#xff0c;方便管理和回滚&#xff0c;还允许多个开发者同时在一个项目上进行开发和协作&#xff0c;提高团队协作效率。 这些平台的代码托管和上传方式都大同小异…

IP-guard邮件管控再升级,记录屏幕画面,智能阻断泄密邮件

邮件是工作沟通以及文件传输的重要工具,却也成为了信息泄露的常见渠道。员工通过邮件对外发送了什么内容,是否含有敏感信息都无从得知,机密通过邮件渠道外泄也难以制止。想要防止企业的重要信息通过邮件方式泄露,我们不仅需要通过技术措施对外发邮件的行为进行规范,也要对…

mysql-视图,创建表,存储过程,循环,判断实操命令

数据库操作命令在IDEA工具database的console命令 数据库表结构与视图 事务隔离级别RR&#xff08;REPEATABLE-READ&#xff09;解决不可重复读演示 mysql-RR隔离级别 -- 查询隔离级别 select transaction_isolation;-- 设置隔离级别 set session transaction isolation level …

【Linux】编译器-gcc/g++使用

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 初见gcc和g3. 程序的翻译过程3.1 预处理3.1.1 宏替换 去注释 头文件展开3.1.2 条件编译 3.2 编译3.3 汇编3.4 链接 4. 链接4.1 动态链接4.2 静态链接 1. 前言 在之…

【学习教程】Vision Pro:开发学习资源

unity 官方网站上线了一款课程,准备好迎接 Apple Vision Pro:免费学习资源汇总。 本合集则是为想要探索 Apple Vision Pro 的创作者提供全方位指导, 由浅入深,与你一同创造前所未有的 沉浸式空间交互体验 的新奇内容。 合集包含最新的开发技术文档。从入门的基础知识核心…

FREERTOS DAY3

作业&#xff1a;1.总结任务的调度算法&#xff0c;把实现代码再写一下&#xff0c; FreeRTOS中默认的调度算法是 抢占式调度时间片轮转 1.抢占式调度&#xff1a;任务优先级高的可以打断任务优先级低的执行&#xff08;适用于不同优先级&#xff09; 2.时间片轮转&#xff…