C++ 找出绝对素数 | 算法详解与代码实现
C++ 找出绝对素数 | 算法详解与代码实现
题目描述: 如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如 13。给定两个正整数 A、B,请求出大于等于 A、小于等于 B 的所有绝对素数。
输入描述: 输入 1 行,包含两个正整数 A 和 B。保证 10<A<B<100。
输出描述: 若干行,每行一个绝对素数,从小到大输出。
样例1: 输入 11 20 输出 11 13 17
思路:
- 判断一个数是否为素数的方法是遍历2到该数的平方根,看是否能整除。
- 对于每个两位数,判断它是否为素数,然后将其十位数和个位数对换,再次判断是否为素数,如果都是素数,则输出该数。
- 遍历A到B之间的所有两位数,按照上述方法判断是否为绝对素数,如果是,则输出。
代码实现如下:
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int num) {
if(num <= 1)
return false;
for(int i=2; i<=sqrt(num); i++) {
if(num % i == 0)
return false;
}
return true;
}
int swapDigits(int num) {
int a = num / 10; // 十位数
int b = num % 10; // 个位数
return b * 10 + a;
}
int main() {
int A, B;
cin >> A >> B;
for(int i=A; i<=B; i++) {
if(isPrime(i) && isPrime(swapDigits(i))) {
cout << i << endl;
}
}
return 0;
}
原文地址: http://www.cveoy.top/t/topic/phbU 著作权归作者所有。请勿转载和采集!