回文素数(数组)(C++) kkmd66

思路

1、先判断回文,联想到快速排序的思想;
2、判断素数,格式输出。

Description:

求m~n(m≥10,n≤10000)之间的回文素数,所谓回文素数,即这个数既是回文又是素数。程序首先要判断某个数是否是回文,再判断是否是素数。如果是回文素数,则保存于数组中,并按6位域宽输出,每行输出5个。

Input:

m n

Output:

m~n之间的回文素数,每个数占6位,每行限输出5个

Sample Input:

10 10000

Sample Output:

    11   101   131   151   181
   191   313   353   373   383
   727   757   787   797   919
   929
#include <iostream>
#include "string"
#include "cmath"
#include "iomanip"

using namespace std;

/**
 * kkmd66
 * @return
 */

int main() {

    int a, b, count = 0;
    cin >> a >> b;

    for (int i = a; i <= b; ++i) {

        //找回文
        string str = to_string(i);

        bool flag_1 = true;
        int begin = 0, end = str.size() - 1;
        while (begin <= end) {
            if (str[begin] != str[end]) {
                flag_1 = false;
                break;
            }
            begin++;
            end--;
        }

        //找质数
        if (flag_1) {

            bool flag_2 = true;
            for (int j = 2; j < sqrt(i * i); ++j) {
                if (i % j == 0) {
                    flag_2 = false;
                    break;
                }
            }

            //输出
            if (flag_2) {
                cout << fixed << setw(6) << right << setfill(' ') << i;
                count++;
                if (count == 5) {
                    cout << endl;
                    count = 0;
                }
            }
        }
    }

    return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值