codevs——1530 大质数

1530 大质数

时间限制: 1 s

空间限制: 1000 KB

题目等级 : 黄金 Gold

题解

题目描述 Description

小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来。(1<=n<=100000)

老师随机写了几个数,交给了小明。小明百度找了很久,都没能解决。现在交给聪明的你。请你帮忙!

————————————————————————————————————————————

简单描述:把第n个质数找出来。

输入描述 Input Description

一个正整数n。

(1<=n<=100000)

输出描述 Output Description

第n个质数。

(第1个质数为2,第2个质数为3。)

样例输入 Sample Input

样例1

2

样例2

65

样例3

20133

样例输出 Sample Output

样例1

3

样例2

313

样例3

226381

数据范围及提示 Data Size & Hint

有大数据等着你,小心超时,不许交表哦。

(1<=n<=100000)

代码:

欧拉筛   暴内存。。。。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 200010
using namespace std;
bool not_prime[N];
int n,ans,sum,tot,prime[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘) {x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
void Euler_sieve()
{
    memset(not_prime,0,sizeof(not_prime));
    for(int i=2;i<=N;i++)
    {
        if(!not_prime[i]) prime[++tot]=i;
        for(int j=1;j<=tot;j++)
        {
            if(i*prime[j]>N) break;
            not_prime[i*prime[j]]=1;
            if(!i%prime[j]) break;
        }
    }
}
int main()
{
    n=read();
    Euler_sieve();not_prime[1]=1;
    for(int i=1;i<=N;i++)
      if(!not_prime[i])
      {
          sum++;
        if(sum==n) {printf("%d",i);return 0;}
      }
}

枚举   ac。。。

注意运算符的优先级!!!

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans,sum,tot;
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘) {x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
bool pd(int x)
{
    for(int j=2;j*j<=x;j++)
     if(x%j==0) return false;
    return true;
}
int main()
{
    n=read();tot=1;ans=2;
    for(int i=3;tot<n;i+=2)
      if(pd(i)) ans=i,tot++;
    printf("%d",ans);
    return 0;
}
时间: 2024-10-30 14:55:44

codevs——1530 大质数的相关文章

素数筛 codevs 1675 大质数 2

1675 大质数 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来. 小明于是交给聪明的你.请你帮忙![wikioi-1530] …………………………以上为背景………………………… 老师怀疑小明仅仅是找到第n个质数,于是又叫小明把1到n以内(不包括n)的质数全部找出来.小明又找到了你…… 输入描述 Input Description

codevs——1675 大质数 2

1675 大质数 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来. 小明于是交给聪明的你.请你帮忙![wikioi-1530] …………………………以上为背景………………………… 老师怀疑小明仅仅是找到第n个质数,于是又叫小明把1到n以内(不包括n)的质数全部找出来.小明又找到了你…… 输入描述 Input Description 一个正整数n

codevs 2530大质数

链接:http://codevs.cn/problem/1530/ 解题思路: 这个题最关键的剪枝还是 因子小于平方根,但不是像原来那样用. 逆转思维,与其说判断哪些是质数,不如说判断哪些不是质数,更简单,更效率. 所有的合数都有一个共同的特点,就是能被拆成质因子. 那么已经出现的质因子,迟早有一次会成为一个合数的因子. 那么直接拿要判断的数挨个被质数除一遍,就可以直接判断是不是合数了. 写到这,前三个点就过了,至于最后一个100000,就是开头提到的剪枝. 不管怎样,一个合数里面的质因子一定也

1675 大质数 2

1675 大质数 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来. 小明于是交给聪明的你.请你帮忙![wikioi-1530] …………………………以上为背景………………………… 老师怀疑小明仅仅是找到第n个质数,于是又叫小明把1到n以内(不包括n)的质数全部找出来.小明又找到了你…… 输入描述 Input Description 一个正整数n. (

[翻译向]阶乘模大质数

本文大部分翻译自http://min-25.hatenablog.com/entry/2017/04/10/215046,有改动.min_25牛逼 考虑经典问题:求$n!\bmod p$,p为一个大质数. 令$v=\lfloor \sqrt{n} \rfloor$,设$g_p(x)=\prod_{i=1}^p (x+i)$,那么我们想要求$g_v(0),g_v(v)...g_v((v-1)v)$. 考虑倍增地求,假设我们有了$g_d(0),g_d(v)...g_d(dv)$,那么$g_d$本身也

hihocoder 1287 : 数论一&#183;Miller-Rabin质数测试 大质数判定

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近突然对密码学产生了兴趣,其中有个叫RSA的公钥密码算法.RSA算法的计算过程中,需要找一些很大的质数. 小Ho:要如何来找出足够大的质数呢? 小Hi:我倒是有一个想法,我们可以先随机一个特别大的初始奇数,然后检查它是不是质数,如果不是就找比它大2的数,一直重复,直到找到一个质数为止. 小Ho:这样好像可行,那我就这么办吧. 过了一会儿,小Ho拿来了一张写满数字的纸条. 小Ho:我用程序随机生成了一些初

Miller_Rabin大质数检验

质数检验有不少算法,一般使用的质数检验复杂度是\(O(\sqrt{n})\): 又如线性筛可以在\(O(n)\)的时间内求出所有1~n的质数 但是,当n非常大,连\(O(\sqrt{n})\)的复杂度也难以接受时,上述算法便不能满足要求 这篇blog记录了一些关于Miller_Rabin算法的内容 大家都知道的著名的费马小定理: \[a^{p-1}\equiv1\pmod p\] 其中\(a,p\)互质 我们猜想,任意选取\(a\),如果一个数\(p\)满足以上式子,那么它就很有可能是一个质数

分解大质数模板(复杂度小于sqrt(n))

//POJ 1811 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <time.h> using namespace std; typedef __int64 lld; lld ran() { return rand() << 16 | rand(); } lld gcd(lld a, lld b) { retu

素数相关?(有关素数的题持续更新中)x

素数(大体举几个栗子): 素数相关知识: 素数概念: 最大公约数只有1和它本身的数叫做质数(素数) 素数小性质: 1.大于一的整数必有素因数. 2.设p是素数,n是任意一个整数 能够推出p|n,(p,n)=1; 3.设p是素数,a,b为整数,若p|ab,则ab中至少有一个能被p整除 4.素数有无穷多个证明: (素数与整数之间的关系:1整除2互素) 假定正整数中只有有限个素数 设p1,p2……pk为从小到大排列起来的数 且N=p1*p2*……pk 设M=N+1 如果M为素数,那么M要大于p1,p2