B3939 [GESP样题 四级] 绝对素数
查看原帖
B3939 [GESP样题 四级] 绝对素数
1647849
Lrn3Mg楼主2025/6/25 18:16

1.输入范围a到b

2.遍历范围内的每个数字

3.检查原数字是否为素数

4.反转数字

5.检查反转后的数字是否为素数

6.如果都满足则输出该数字


#include<iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    
    for(int num = a; num <= b; num++) {
        if(num < 2) continue;  // 小于2的数不是素数
        
        // 判断原数是否为素数
        bool is_prime = true;
        for(int i = 2; i * i <= num; i++) {
            if(num % i == 0) {
                is_prime = false;
                break;
            }
        }
        
        if(!is_prime) continue;
        
        // 反转数字
        int reversed = 0, temp = num;
        while(temp > 0) {
            reversed = reversed * 10 + temp % 10;
            temp /= 10;
        }
        
        // 判断反转数是否为素数
        if(reversed < 2) continue;
        
        bool reversed_prime = true;
        for(int i = 2; i * i <= reversed; i++) {
            if(reversed % i == 0) {
                reversed_prime = false;
                break;
            }
        }
        
        if(reversed_prime) {
            cout << num << endl;
        }
    }
    return 0;
}

祝各位四级考生顺利通过(跳级)期待你们的好成绩

2025/6/25 18:16
加载中...