1138 - 求无暇素数
217
2
#include <iostream>
using namespace std;
//MrHe.net原创,转载需保留链接,谢谢。
//定义一个判断质数的函数
bool isPrime(int x) {
int i;
bool r = true;
for(i = 2; i * i <= x; i++) {
if(x % i == 0) {
r = false;
break;
}
}
if (x < 2) {
r = false;
}
return r;
}
//定义一个函数,将字符串转换成数字
int charToNum(char a) {
return a - 48;
}
int main() {
char a[20];
int b[20];
int n1, n2, j, k = 0, x;
cin >> a;
int sum = 0;
//将字符串%前面的数字存入数组a[i]
for (int i = 0; a[i] != '%'; i++) {
//从第二位开始,因为第一位没有i-1
if(i > 0) {
//判断相邻两个数和交换数位后是否均为质数
n1 = charToNum(a[i]) * 10 + charToNum(a[i - 1]);
n2 = charToNum(a[i - 1]) * 10 + charToNum(a[i]);
//符合条件的数存入数组b[k]
if(isPrime(n1) == true and isPrime(n2) == true) {
b[k] = n2;
k++;
}
}
}
//输出,这里去掉后面的逗号脑子都想破了~
for(x = 0; x < k; x++) {
cout << b[x];
if(x < k - 1) {
cout << ",";
}
}
}