1181 质数中的质数(质数筛法)(51NOD基础)

1181 质数中的质数(质数筛法)(51NOD基础)

题目来源: Sgu

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。

Input

输入一个数N(N <= 10^6)

Output

输出>=N的最小的质数中的质数。

Input示例

20

Output示例

31
#include <cstdio>

#define maxn 10000000 

bool prime[maxn] ;
int p[maxn] ;
int total ; 

void init(){
    total = 0 ;
    prime[0] = prime[1] = false ;
    for(int i = 2 ; i<maxn ; i++){
        prime[i] = true ;
    }
    //线性筛法  复杂度  O(n)
    for(int i=2 ; i<maxn ; i++){
        if(prime[i]) p[++total] = i ;
        for(int j=1 ; j<=total&&p[j] * i < maxn ; j++){
            prime[i * p[j] ] = false ;
            if(i%p[j] == 0 )
                break ;
        }
    }

} 

int main(){
    int n ;
    init() ;
    while(~scanf("%d" , &n)){
        for(int i=1 ; i<=total ; i++){
            if(prime[i] && p[i] >=n){
                printf("%d\n" , p[i]) ;
                break ;
            }
        }
    }
    return 0 ;
}
时间: 2024-08-06 09:36:56

1181 质数中的质数(质数筛法)(51NOD基础)的相关文章

51Nod - 1181 质数中的质数(质数筛法)

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数.例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数.现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做). Input输入一个数N(N <= 10^6)Output输出>=N的最小的质数中的质数.Sample Input 20 Sample Output 31 用eular质数筛即可 1 #include<iostream> 2 #include<cstdio>

1181 质数中的质数(质数筛法)

1181 质数中的质数(质数筛法) 基准时间限制:1 秒 空间限制:131072 KB 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数.例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数.现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做). Input 输入一个数N(N <= 10^6) Output 输出>=N的最小的质数中的质数. Input示例 20 Output示例 31 #include <cstdlib>

51nod 1181 质数中的质数

1181 质数中的质数(质数筛法) 题目来源: Sgu 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数.例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数.现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做). Input 输入一个数N(N <= 10^6) Output 输出>=N的最小的质数中的质数. Input示例 20 Output

改进筛法- 质数中的质数(质数筛法)

1181 质数中的质数(质数筛法) 题目来源: Sgu 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数.例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数.现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做). Input 输入一个数N(N <= 10^6) Output 输出>=N的最小的质数中的质数. Input示例 20 Output示例 31 最常

19新生赛 质数中的质数

题目描述: hhs刚刚学会了如何判断一个数是质数,但现在hhs被一个与质数有关的问题难住了,求求你帮他解决这个问 题.问题如下: 如果质数在质数列表中也是质数,则称为质数中的质数. 例如:3 5分别是排第二和第三的质数,因此它们是 质数中的质数. 现在给出一个数字N,最小质数> = N中的质数是多少.(可以考虑用质数筛法来做)输入格式: 输入一个数N(N <= 10^6)输入格式: 输出>=N的最小的质数中的质数.样例输入 20输出 31 代码 #include<bits/stdc

SDUT 3305 质数中的质数 (素数筛)

质数中的质数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 如果一个质数,它在质数中的编号也是质数,就称为质数中的质数. 例如3是一个排在第2位质数,所以3是质数中的质数,虽然7是一个质数,但7排在第4位,所以7不是质数中的质数 给你一个数n,求出 >=n 的一个最小的质数中的质数 输入 输入一个数n(0<=n <= 10^6) 输出 输出>=n的最小的质数中的质数 示例输入 2 3 4 示例输出 3 3 5

输入一个数值,输出其是否质数,1是质数,0不是质数

输入一个数值,输出其是否质数,1是质数,0不是质数. 1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 5 int sushu(int num)//1是质数,0不是质数 6 { 7 int i; 8 int flag = 1;//默认是质数 9 10 if (num <= 1)//负数,0,1不是质数 11 { 12 flag = 0; 13 } 14 else 15 { 16 for (i = 2;i < num;

.net中的并行编程系列-1.基础知识

最近半年一直研究用.net进行并行程序的开发与设计,再研究的过程中颇有收获,所以画了一个图总结了一下并行编程的基础知识点,这些知识点是并行编程的基础,有助于我们编程高性能的程序,里面的某些结构实现机制也蕴含着丰富的软件设计思想,在后续的文章中我会对图里面提到某些数据结构或同步机制的源码进行分析. 注:虽然使用的平台是.net ,但大部分知识点和平台以及语言无关,相关数据结构其他相关平台都有实现,包括优化手段都非常相似. .net中的并行编程系列-1.基础知识,布布扣,bubuko.com

1058 N的阶乘的长度(51NOD基础题)

1058 N的阶乘的长度(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Output示例 3 /* n! 的长度 len = (int)log10(n!) + 1 ; -->> len = log10(1) + log10(2) + .... + log1