多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

东方博宜OJ 1138:求无暇素数

东方博宜OJ 1138:求无暇素数 【题目来源】https://oj.czos.cn/p/1138【题目描述】一个两位整数 A 本身是素数若将其个位数字与十位数字交换得到一个新的两位数 B而 B 也是素数我们则称 A 为无暇素数。例如31 是素数个位数字与十位数字交换后得到 13也是素数。所以 31 是无暇素数。问题给出一个数字字符串即字串中的字符全部由数字组成求出其所有长度为 2 的子串组成的无暇素数。【输入格式】一个数字字符串长度20以%结束。【输出格式】全部的无暇素数之间用一个逗号隔开。​​​​​​​【输入样例】321314%​​​​​​​【输出样例】13,31【数据范围】数字字符串长度20【算法分析】● 判断素数的经典代码bool isPrime(int n) { if(n2) return false; for(int i2; i*in; i) { if(n%i0) return false; } return true; }● 本题使用的一种格式化输出的代码#include bits/stdc.h using namespace std; int main() { int n; cinn; bool firsttrue; for(int i1; in; i) { if(!first) cout,; couti; firstfalse; } return 0; } /* in:5 out:1,2,3,4,5 */● 注意数字与字符之间的转换方法。例如7-07707。【算法代码】#include bits/stdc.h using namespace std; bool isPrime(int n) { if(n2) return false; for(int i2; i*in; i) { if(n%i0) return false; } return true; } int main() { string s; cins; bool firsttrue; for(int i0; is.size()-2; i) { int a(s[i]-0)*10(s[i1]-0); int b(a%10)*10a/10; if(isPrime(a) isPrime(b)) { if(!first) cout,; couta; firstfalse; } } return 0; } /* in:321314% out:13,31 */【参考文献】https://blog.csdn.net/hnjzsyjyj/article/details/163876393
返回列表