1 条题解

  • 0
    @ 2026-10-26 13:21:31

    思路与算法

    定义素数判断函数:小于2不是素数,否则试除2至平方根。枚举10至99,用十位、个位交换得到逆序数;原数与逆序数都为素数时输出。

    正确性说明

    不超过平方根的非平凡因数存在当且仅当该数为合数,因此试除判定准确。枚举了全部两位自然数,交换十位个位正是题述换位,两个素性条件共同成立才接受,输出集合与题意完全相同。

    复杂度

    固定90个数,每个至多试除9个因数,时间O(1)、额外空间O(1),函数局部变量初始化O(1)。若扩展为上界B则朴素上界O(B√B)。

    易错点

    1不为素数。回文素数如11也符合换位后仍素数,不要排除。固定两位全集无输入,1点输出全部合法数,按从小到大各一行。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    bool prime(int n) {
        if (n < 2)
            return false;
        for (int d = 2; d * d <= n; ++d)
            if (n % d == 0)
                return false;
        return true;
    }
    int main() {
        for (int n = 10; n < 100; ++n)
            if (prime(n) && prime(n % 10 * 10 + n / 10))
                cout << n << "\n";
    }
    
    • 1

    信息

    ID
    1750
    时间
    1000ms
    内存
    64MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者