1138 - 求无暇素数

思路

  1. 将字符串读取并存入到数组a[i]中;
  2. 编写相关函数;
  3. 调用函数判断是否符合要求;
  4. 输出。

知识点

  1. 字符串的读入与存储;
  2. 函数的编写与调用;
  3. 难点是去掉最后一个逗号。

代码实现

#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 << ",";
        }
    }
}
文章目录