zoukankan      html  css  js  c++  java
  • 超级素数(sprime)

     超级素数(sprime)

    题目描述

    超级素数是指一个素数,每去掉后面一个数字,总能保证剩下的数为质数,例如:
    373->37->3
    这是一个长为3的超级素数。

    输入

    输入一个整数n (10≤n≤108)。

    输出

    从小到大输出所有小于等于n的超级素数,每个超级素数之间留一个空格。末尾也有一个空格

    样例输入

    10
    
    

    样例输出

    2 3 5 7 
    仔细一想, 第一位肯定是2, 3, 5 ,7 这四个素数, 然后继续添加, 只能添加1, 3, 7, 9 为啥,,自己想, 判断为素数后,继续添加1, 3 ,7 , 9, 如此循环。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <climits>
    using namespace std;
     
    const int maxn = 10010;
    const int INF = 0x3f3f3f3f;
    int a[maxn];
    int n;
    int ans = 4;
    int cnt = 0, m;
    void bfs(int n) {
        int flag = 1;
        for(int i = 2; i * i <= n; i++) {
            if(n % i == 0) {
                flag = 0;
                break;
            }
        }
        if(flag) {
                a[cnt++] = n;
            if(n*10 + 3 <= m) {
                bfs(n*10+3);
            }
            if(n*10 + 1 <= m) {
                bfs(n*10+1);
            }
            if(n*10 + 7 <= m) {
                bfs(n*10+7);
            }
            if(n*10 + 9 <= m) {
                bfs(n*10+9);
            }
     
        }
    }
    int main() {
        scanf("%d", &m);
        if(m >= 2)
        bfs(2);
        if(m >= 3)
        bfs(3);
        if(m >= 5)
        bfs(5);
        if(m >= 7)
        bfs(7);
        sort(a, a+cnt);
        for(int i = 0; i < cnt; i++){
        printf("%d ", a[i]);
        }
        printf("
    ");
       return 0;
    }
    View Code
  • 相关阅读:
    Linux之redis-cluster(集群配置)
    MariaDB主从复制,redis发布订阅,持久化,以及主从同步
    Vue之添加全局变量
    Linux之nginx入门
    Linux中python3,django,redis以及mariab的安装
    Linux系统优化及基础命令
    linux基本命令
    Linux常用命令大全
    Flask之项目配置,目录构建,闪现
    C语言II博客作业04
  • 原文地址:https://www.cnblogs.com/cshg/p/5720258.html
Copyright © 2011-2022 走看看