HALLO,大家好,我是Zac,太久没发文章了(毕竟快开学了),今天刚好有点闲,发一遍题解蹭个流量。
题目描述:
如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如 13。给定两个正整数 A,B,请求出大于等于 A、小于等于 B 的所有绝对素数。
输入格式
输入 1 行,包含两个正整数 A 和 B。保证 10<A<B<100。
输出格式
若干行,每行一个绝对素数,从小到大输出。
输入输出样例
输入
11 20
输出
11
13
17
思路:
实现函数
看完这道题,大家有没有一种感觉,就是这道题其实两个函数就搞定了(敲黑板:四级考的就是函数)。现在让我们分析一下:这两个函数的功能是什么?
其中一个函数是来实现质数判断的,而另外一个是用来交换个位和十位的位置的,但是我们还是要注意一点:第二个函数里面还要再套第一个函数,因为题里写着:
如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数。
所以在swap完以后,还要再进行一次质数判断:
bool is (int n) { // 质数判断
for (int i = 2; i * i <= n; i++) { // 判断循环
if (n % i == 0) {
return 0; // 不是
}
}
return 1; // 是
}
bool is_swap (int m) { // 进行数位交换以后再进行一次判断
int ge, shi, sum; // 个位,十位,交换后数字
ge = m % 10;
shi = m / 10;
sum = ge * 10 + shi;
if (is(sum)) { // 判断
return 1;
}
return 0;
}
主函数
主函数就没什么可说的了,正常输入以后,for(或while)循环遍历区间每一个数字,加两个函数,每次执行完输出就行了:
int main () {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++) { // 区间遍历
if (is(i) && is_swap(i)) { // 判断绝对素数
cout << i << endl; // 如果是就输出
}
}
return 0; // 完美收官 :)
}
最后放上个AC代码:
AC代码(强迫症版,无注释):
#include <iostream>
using namespace std;
bool is (int n) {
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
bool is_swap (int m) {
int ge, shi, sum;
ge = m % 10;
shi = m / 10;
sum = ge * 10 + shi;
if (is(sum)) {
return 1;
}
return 0;
}
int main () {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++) {
if (is(i) && is_swap(i)) {
cout << i << endl;
}
}
return 0;
}
AC代码(懒人版):
#include <iostream>
using namespace std;
bool is(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0)return 0;
}
return 1;
}
bool is_swap(int m){
int ge,shi,sum;
ge=m%10;
shi=m/10;
sum=ge*10+shi;
if(is(sum))return 1;
return 0;
}
int main(){
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++){
if(is(i)&&is_swap(i))cout<<i<<endl;
}
return 0;
}
既然看都看这里了,就给个赞呗~
(我们下期再见~)
菜单(彩蛋):
对了,家人们,谁能来帮我康康这道题:(本蒟蒻实在不会,水平较低,请谅解……)
题目描述
N 进制数指的是逢 N 进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五;本题中,十一进制到十五进制也是类似的)。
在本题中,我们将给出 个不同进制的数。你需要分别把它们转换成十进制数。
输入格式
输入的第一行为一个十进制表示的整数 N。接下来 N 行,每行一个整数 K,随后是一个空格,紧接着是一个 K 进制数,表示需要转换的数。保证所有 K 进制数均由数字和大写字母组成,且不以 0 开头。保证 K 进制数合法。
保证 N≤1000;保证 2≤K≤16。
保证所有 K 进制数的位数不超过 9。
输出格式
输出 N 行,每一个十进制数,表示对应 K 进制数的十进制数值。
输入输出样例
输入 #1
2
8 1362
16 3F0
输出 #1
754
1008
——————————————————————————————————————————
输入 #2
2
2 11011
10 123456789
输出 #2
27
123456789
求救:
有会的大佬请麻烦在评论区@我一下哈~
感谢各位大佬对本蒟蒻的支持!
(END)
4688

被折叠的 条评论
为什么被折叠?



