百度-双素数-c++


/*
 * DoubleNum.cpp
 *
 *  Created on: 2017年9月27日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <algorithm>
#include <unordered_map>
using namespace std;

bool p[1000010];

void creatTable() {
    memset(p, true, sizeof(p));
    p[0] = false; //0不是素数
    p[1] = false; //1不是素数
    for (int i = 2; i * i < 1000000; i++) {
        for (int j = 2; j * i < 1000000; j++) {
            p[j * i] = false; //筛掉2,3,……的倍数
        }
    }
}
int reverse(int num) { //倒置素数
    int *R = new int[1000000];
    int count = 0;
    while (num) {
        R[count++] = num % 10;
        num /= 10;
    }
    int out = 0;
    for (int i = 0; i < count; i++) {
        out = out * 10 + R[i];
    }
    delete R;
    return out;
}
int main() {
    creatTable();
    int k;
    while (cin >> k) {
        int count = 0;
        int result = -1;
        for (int i = 10; i < 1000000; i++) {
            if (p[i] && p[reverse(i)] && (i != reverse(i)))
                count++;
            if (count == k) {
                result = i;
                break;
            }
        }
        cout << result << endl;
    }
    return 0;
}

参考:
https://www.nowcoder.com/discuss/50105

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,889评论 2 45
  • 今天在做列表删除的时候,当发现删除最后一行结束后意外的崩溃了,打印了日志发现这更本就不是应用的异常,属于recyc...
    Ggx的代码之旅阅读 1,325评论 0 1
  • 人的欲望永远不会达到饱和,只有最大程度的满足。 世上无欲无求的人本不多,你总有些想要得到,或者说甚至只想看看的东西...
    YLAMN阅读 248评论 0 0

友情链接更多精彩内容