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

发布时间:2026/5/24 14:43:20

P1217 [USACO1.5] 回文质数 Prime Palindromes # P1217 [USACO1.5] 回文质数 Prime Palindromes## 题目描述因为 $151$ 既是一个质数又是一个回文数从左到右和从右到左是看一样的所以 $151$ 是回文质数。写一个程序来找出范围 $[a,b] (5 \le a b \le 100,000,000)$一亿间的所有回文质数。## 输入格式第一行输入两个正整数 $a$ 和 $b$。## 输出格式输出一个回文质数的列表一行一个。## 输入输出样例 #1### 输入 #15 500### 输出 #15711101131151181191313353373383## 说明/提示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$ 的回文数cppfor (d1 1; d1 9; d12) { // 只有奇数才会是素数for (d2 0; d2 9; d2) {for (d3 0; d3 9; d3) {palindrome 10000*d1 1000*d2 100*d3 10*d2 d1;//(处理回文数...)}}}#include iostream #includecmath using namespace std; bool Prime(int n){ if(n2){ return false; } if(n2){ return true; } else{ for(int i3;isqrt(n);i){ if(n%i0){ return false; } } return true; } } int Hui(int n){ if(n%20) return -1; else{ int n1; int num0; while(n!0){ n1n%10; numnum*10n1; nn/10; } return num; } } int main() { int a,b; cinab; if(a%20) a; for(int ia;ib;i2){ if(Hui(i)i){ if(Prime(i)){ coutiendl; } } } return 0; }

相关新闻