测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A24178. 区间内的真素数

填空题 中等

题目描述

区间内的真素数

题目描述

找出正整数M和N之间(N不小于M)的所有真素数。

真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。

例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。

输入

输入两个数M和N,空格间隔,1<=M<=N<=100000。

输出

按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。

输入样例

10 35

输出样例

11,13,17,31

参考答案

#include <bits/stdc++.h> using namespace std; bool isPrime(int n)//判断是否是质数 { if(n < 2) return false; for(int i = 2; i <= sqrt(n); ++i) if(n % i == 0) return false; return true; } int rev(int n)//数字反序 { int num = 0; for(int a = n; a > 0; a /= 10)//数字拆分 前提n >= 1 num = num * 10 + a % 10; return num; } int main() { int m, n; cin >> m >> n; bool hasShow = false;//是否已经有输出 for(int i = m; i <= n; ++i) { if(isPrime(i) && isPrime(rev(i)))//如果i和i的逆序的数字都是质数 { if(hasShow == true)//如果已经输出过 cout << ','; else hasShow = true; cout << i; } } if(hasShow == false)//如果没有输出过 cout << "No"; return 0; }
上一题 下一题