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

    问题 G: 超级素数(sprime)

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 47  解决: 11
    [提交][状态][讨论版]

    题目描述

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

    输入

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

    输出

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

    样例输入

    10
    

    样例输出

    2 3 5 7 
    【分析】通过找规律,发现所求素数中只可能出现1,2,3,5,7,9,而且1,9不能出现在首位,2,5只能出现在首位,然后就是BFS暴搜了。
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <time.h>
    #include <string>
    #include <map>
    #include <stack>
    #include <vector>
    #include <set>
    #include <queue>
    #define inf 0x3f3f3f3f
    #define mod 1000000007
    typedef long long ll;
    using namespace std;
    const int N=100010;
    int n,dp[N],len;
    int w[21][21];
    int g[3];
    int b,c;
    int a[10]={1,3,5,7,9};
    set<int>p;
     
     
    bool charge(int x)
    {
        for(int j=2;j<=sqrt(x);j++)
        {
            if(x%j==0)return false;
        }
        return true;
    }
    void bfs()
    {
        queue<int>q;
        q.push(2);q.push(3);q.push(5);q.push(7);
        while(!q.empty())
        {
            int t=q.front(); p.insert(t);
            q.pop();
            for(int i=0;i<5;i++)
            {
                int k=t*10+a[i];
                if(charge(k)&&k<=n)
                {
     
                    q.push(k);
                }
            }
        }
    }
     
    int main() {
        memset(w,0,sizeof(w));
        cin>>n;
        bfs();
        for(set<int>::iterator it=p.begin();it!=p.end();it++)
        {
            cout<<*it<<" ";
        }cout<<endl;
        return 0;
    }

  • 相关阅读:
    Java NIO使用及原理分析(二)(转)
    Java NIO使用及原理分析 (一)(转)
    虚拟机字节码执行引擎
    虚拟机类加载机制
    浅析Java中的final关键字
    java内存模型7-处理器内存模型
    java内存模型6-final
    最小生成树
    有向图的基本算法
    并查集(Union-Find)算法介绍
  • 原文地址:https://www.cnblogs.com/jianrenfang/p/5719852.html
Copyright © 2011-2022 走看看