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>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6
 7 using namespace std;
 8 char isprime[10000005];
 9 int primelist[10000005];
10
11 int Eular(int n)
12 {
13     int cnt=0,x;
14     memset(isprime,1,sizeof(isprime));
15     int i=2;
16     while(x<n)
17     {
18         if(isprime[i])
19         {
20             cnt++;
21             primelist[cnt]=i;
22             if(isprime[cnt])
23                 x=i;
24         }
25         for(int j=1;j<=cnt&&i*primelist[j]<=1e7;j++)
26         {
27             isprime[i*primelist[j]]=0;
28             if(i%primelist[j]==0)
29                 break;
30         }
31         i++;
32     }
33     return x;
34 }
35
36 int main()
37 {
38     int n;
39     while(~scanf("%d",&n))
40     {
41         printf("%d\n",Eular(n));
42     }
43
44
45     return 0;
46 }
时间: 2024-10-25 17:26:20

51Nod - 1181 质数中的质数(质数筛法)的相关文章

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

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

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;

51nod 1277 字符串中的最大值

题目链接 51nod 1277 字符串中的最大值 题解 对于单串,考虑多串的fail树,发现next数组的关系形成树形结构 建出next树,对于每一个前缀,他出现的次数就是他子树的大小 代码 #include<cstdio> #include<cstring> #include<algorithm> inline int read() { int x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9

[51NOD1181]质数中的质数(质数筛法)(欧拉筛)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181 思路:欧拉筛出所有素数和一个数的判定,找到大于n的最小质数序号p,并且判断p是不是质数,输出这个数. 1 /* 2 ━━━━━┒ギリギリ♂ eye! 3 ┓┏┓┏┓┃キリキリ♂ mind! 4 ┛┗┛┗┛┃\○/ 5 ┓┏┓┏┓┃ / 6 ┛┗┛┗┛┃ノ) 7 ┓┏┓┏┓┃ 8 ┛┗┛┗┛┃ 9 ┓┏┓┏┓┃ 10 ┛┗┛┗┛┃ 11 ┓┏┓┏┓┃ 12