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

P1217 [USACO1.5] 回文质数 Prime Palindromes

题目描述

因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 151 是回文质数。

写一个程序来找出范围 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 , 000 ) [a,b] (5 \le a < b \le 100,000,000) [a,b](5a<b100,000,000)(一亿)间的所有回文质数。

输入格式

第一行输入两个正整数 a a a b b b

输出格式

输出一个回文质数的列表,一行一个。

1.题目分析

该题考查的是质数的判断,回文数的判断,以及对时间复杂度的控制。
质数的判断直接遍历取余是否为0即可,
回文数的判断:首先肯定是奇数,数字的位数一定也是奇数:
题目要求的一亿以内,所以可以是1,3,5,7位。
使用循环嵌套乘上数量级可以得到相应的回文数。

2.题目思路

首先写一个判断质数的函数,为降低时间复杂度,遍历1亿以内的数会出现超时,
所以只对奇数,奇数位数的数进行判断,分别一个循环生成一位数的回文质数,两个循环生成三位数的回文质数,三个循环生成五位数的回文质数,四个循环生成七位数,到此已经达到了题目要求的一亿以内。
值得一提的是11,偶数中的回文质数,需要做一个特判。

3.代码演示

#include <stdio.h>
#include <math.h>//判断是否为质数
int isPrime(int n) {int flag = 1;for (int i = 2; i <= sqrt(n); ++i) {if (n % i == 0) {flag = 0;}}return flag;
}int main() {int d1, d2, d3, d4;int palindrome;int a, b;scanf("%d%d", &a, &b);//处理1位数 加上11//5到10for (d1 = 2; d1 <= 11; d1++) {palindrome = d1;//(处理回文数...)if (isPrime(palindrome) == 1 && palindrome >= a && palindrome <= b) {printf("%d\n", palindrome);}}//11到999//处理3位数for (d1 = 1; d1 <= 9; d1 += 2) {    // 只有奇数才会是素数for (d2 = 0; d2 <= 9; d2++) {palindrome = d1 * 100 + d2 * 10 + d1;//(处理回文数...)if (isPrime(palindrome) == 1 && palindrome >= a && palindrome <= b) {printf("%d\n", palindrome);}}}//1000到99999//处理5位数for (d1 = 1; d1 <= 9; d1 += 2) {    // 只有奇数才会是素数for (d2 = 0; d2 <= 9; d2++) {for (d3 = 0; d3 <= 9; d3++) {palindrome = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;//(处理回文数...)if (isPrime(palindrome) == 1 && palindrome >= a && palindrome <= b) {printf("%d\n", palindrome);}}}}// 100000到9999999//处理7位数 千万for (d1 = 1; d1 <= 9; d1 += 2) {    // 只有奇数才会是素数for (d2 = 0; d2 <= 9; d2++) {for (d3 = 0; d3 <= 9; d3++) {for (d4 = 0; d4 <= 9; d4++) {palindrome =1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;//(处理回文数...)if (isPrime(palindrome) == 1 && palindrome >= a && palindrome <= b) {printf("%d\n", palindrome);}}}}}return 0;
}
http://www.lryc.cn/news/98079.html

相关文章:

  • 【STM32MP1系列】DDR内存测试用例
  • 【CAS6.6源码解析】调试Rest API接口
  • C++设计模式之模板方法、策略模式、观察者模式
  • 【计算机网络 02】物理层基本概念 传输媒体 传输方式 编码与调制 信道极限容量 章节小结
  • 无涯教程-jQuery - serialize( )方法函数
  • 一套不错的基于uniapp实现的投票类小程序/H5
  • Mac代码编辑器sublime text 4中文注册版下载
  • django------模糊查询
  • AVFoundation - 音视频组合编辑
  • jpa生成实体类,jpa根据数据库表生成实体类
  • 嵌入式Linux系统组成
  • 【iOS】—— RunLoop和多线程相关问题总结
  • 在CSDN学Golang云原生(gitlab)
  • cv2抛出异常 “install libgtk2.0-dev and pkg-config, then re-run cmake or configure”
  • C#..上位机软件的未来是什么?
  • CentOS 搭建 GitLab Git
  • 【MTK平台】【wpa_supplicant】关于wpa_supplicant_8/src/p2p/p2p_go_neg.c文件的介绍
  • win11安装appium
  • 数据科学、统计学、商业分析
  • 【多模态】18、ViLD | 通过对视觉和语言知识蒸馏来实现开集目标检测(ICLR2022)
  • 【AGI】Copilot AI编程辅助工具安装教程
  • Mac配置android studio的终端terminal
  • 第八次CCF计算机软件能力认证
  • MATLAB RANSAC平面拟合 (29)
  • 铁路关基保护新规:优先采购安全可信的网络产品和服务!
  • Kafka在大数据处理中的应用
  • Linux Day03
  • OpenCV 对轮廓进行多边形逼近(Polygon Approximation)
  • Docker的数据管理和Dockerfile的指令
  • [SQL挖掘机] - 交叉连接: cross join