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

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

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

输入 #1

5 500

输出 #1

5
7
11
101
131
151
181
191
313
353
373
383

说明/提示

Hint 1: Generate the palindromes and see if they are prime.

提示 1: 找出所有的回文数再判断它们是不是质数(素数).

Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.

提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。

题目翻译来自NOCOW。

USACO Training Section 1.5

产生长度为 5 5 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;//(处理回文数...)}}}
#include<bits/stdc++.h>
using namespace std;
int a[50000000];
int isPrime(int num)
{for(int i=2;i<=sqrt(num);i++)if(num%i==0)	return 0;return 1;
}
int makeHuiwen()
{int d1,d2,d3,d4,palindrome,cnt=0;for(d1=1;d1<=9;d1=d1+2)       //1位数{palindrome=d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;} for(d1=1;d1<=9;d1=d1+2)        //2位数 {	palindrome=d1*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;}for(d1=1;d1<=9;d1=d1+2)      //3位数 	  for(d2=0;d2<=9;d2++){palindrome=d1*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;}for(d1=1;d1<=9;d1=d1+2)             //4位数for(d2=0;d2<=9;d2++){palindrome=d1*1000+d2*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;	}for(d1=1;d1<=9;d1=d1+2)					//5位数 	for(d2=0;d2<=9;d2++)		for(d3=0;d3<=9;d3++){palindrome=d1*10000+d2*1000+d3*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;	}for(d1=1;d1<=9;d1=d1+2)					//6位数 	for(d2=0;d2<=9;d2++)		for(d3=0;d3<=9;d3++){palindrome=d1*100000+d2*10000+d3*1000+d3*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;	}for(d1=1;d1<=9;d1=d1+2)	                //7位数 for(d2=0;d2<=9;d2++)for(d3=0;d3<=9;d3++)for(d4=0;d4<=9;d4++){palindrome=d1*1000000+d2*100000+d3*10000+d4*1000+d3*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;}for(d1=1;d1<=9;d1=d1+2)	                //8位数 for(d2=0;d2<=9;d2++)for(d3=0;d3<=9;d3++)for(d4=0;d4<=9;d4++){palindrome=d1*10000000+d2*1000000+d3*100000+d4*10000+d4*1000+d3*100+d2*10+d1;if(isPrime(palindrome)) cnt++,a[cnt]=palindrome;}return 0;
}int main()
{int small,big;cin>>small>>big;makeHuiwen();for(int i=0;i<=50000000;i++){if(a[i]>=small && a[i]<=big){cout<<a[i]<<endl;}}return 0;}
http://www.lryc.cn/news/574056.html

相关文章:

  • Rust 切片类型(slice type)
  • 关于华为Pura70Pro+升级鸿蒙NEXT和回退
  • 第三章---需求分析
  • JavaScript 中 async/await 的工作原理
  • Chromium 136 编译指南 macOS篇:编译优化技巧(六)
  • 【C++】C++中的虚函数和多态的定义与使用
  • 微软ASR与开源模型分析
  • 黑马python(十五)
  • C语言数组介绍 -- 一维数组和二维数组的创建、初始化、下标、遍历、存储,C99 变长数组
  • 三、kubectl使用详解
  • 安卓9.0系统修改定制化____如何编辑和修改安卓手机默认按键配置文件 改变按键功能 操作篇 九
  • LeetCode中K个链表的链接的解法
  • 区块链大讲堂 | 分布式隐私计算友好的零知识证明协议
  • 矩阵阶数(线性代数) vs. 张量维度(深度学习):线性代数与深度学习的基石辨析,再也不会被矩阵阶数给混淆了
  • Flink SQL执行流程深度剖析:从SQL语句到分布式执行
  • 机器学习基础:从概念到应用的全面解析
  • mac隐藏文件现身快捷键
  • Node.js 中的 JWT 认证:从生成到验证的完整指南
  • 深入浅出Node.js中间件机制
  • Apache SeaTunnel Spark引擎执行流程源码分析
  • 17、Rocket MQ快速实战以及核⼼概念详解
  • 更新麒麟连不上外网
  • 从理论到实践:Air8101外挂Air780EPM模块,实现4G联网能力!
  • 游戏盾:守护虚拟世界的坚固堡垒
  • 「Linux用户账号管理」组群管理
  • ActixWeb框架实战案例精萃
  • DAY 40 训练和测试的规范写法
  • 详解HarmonyOS NEXT仓颉开发语言中的全局弹窗
  • LED-Merging: 无需训练的模型合并框架,兼顾LLM安全和性能!!
  • Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)