洛谷-区间内的真素数

#include <bits/stdc++.h>
using namespace std;
int m, n, b[10010], j; // j相当于一个指示数,用来存真素数,存完后则j ++
bool isPrime(int x)
{
    
     // 判断素数
    for (int i = 2; i <= sqrt(x); i ++)
    if (x % i == 0) return false;
    return true; // 这代码好经典啊……
}
bool isxrxPrime(int x)
{
    
     // 将数回文,并求它俩是否都是素数
    int a[10], tx = x, i = 0, nx = 0, g = 1;
    while (tx)
    {
    
    
        a[i ++] = tx % 10; // 回文这一位加进去~
        tx /= 10; // 去掉这一位QwQ
    }
    while (i)
    {
    
     // 生成回文数
        tx += g * a[i - 1];
        g *= 10;
        i --;
    }
    if (isPrime(x) && isPrime(tx)) return true; // 俩都是素数
    return false;
}
int main()
{
    
    
    cin >> m >> n; // 输入 
    bool norprime = true; // 是否有真素数
    for (int i = m; i <= n; i ++)
    {
    
    
        if (isxrxPrime(i))
        {
    
     // FOUNDED!
            b[j ++] = i; // 存上ta
            norprime = false; // 设为false,找到啦
        }
    }
    if (!norprime)
    {
    
    
        for (int k = 0; k < j - 1; k ++) cout << b[k] << ","; // 输出
        cout << b[j - 1] << endl; // 大坑,最后一个数后面没有逗号
    }
    else cout << "No" << endl; // 没找着真素数
    return 0;
 }

猜你喜欢

转载自blog.csdn.net/weixin_52045928/article/details/121449632