埃拉托斯特尼筛法

如果求第n 个素数,有一个数学公式可以得到第n 个素数的上界:uper=n*ln(n)+n*ln(ln(n)),n>=6。如果一个数是素数那么这个数的倍数是非素数因此例如2是素数,2+2,2+2+2,2+2+2+2,.......就是非素数,我们可以开一个数组,数组的值为0/1,0表示非素数,1表是素数,那么只要找到第n个值为1的数组他的下标就是要求的值,只要把2到根号uper中所有的素数的倍数标记为0就行,x=2,a[x]=0,a[x+2]=0........。

代码:

 #include<iostream>
#include<cmath>
using namespace std;
bool a[];
int main()
{
int n;
while(cin>>n)
{
int uper=n*log(n)+n*log(log(n));
for(int i=;i<=uper+;i++)
a[i]=;
for(int i=;i*i<=uper;i++)
{
if(a[i])
for(int j=i+i;j<=uper;j+=i)
a[j]=;
}
int sum=;
for(int i=;;i++)
{
if(a[i])
sum++;
if(sum==n)
{
cout<<i<<endl;
break;
}
}
}
return ;
}

求第N个素数的更多相关文章

  1. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  2. 求1e11以内的素数

    有两种做法,一种是打表,另一种是直接求. 打表 将1e11每隔len(len=2000w)个数字统计一下该区间内素数的个数,比如cnt[1] 表示[1,len]以内有多少个素数,cnt[2]表示[le ...

  3. Python3求m以内的素数、求m个数中最小的n个数

    [本文出自天外归云的博客园] 题1:求m以内的素数(m>2) def find_all_primes_in(m): def prime(num): for i in range(2, num): ...

  4. 【C语言】输入一个整数N,求N以内的素数之和

    [C语言]输入一个整数N,求N以内的素数之和 /* ========================================================================== ...

  5. 求小于10000的素数的个数 Exercise06_10

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求小于10000的素数的个数 * */ public class Exercise06_10 { public static ...

  6. 斐波那契数列(递归)&求100以内的素数

    Java 5 添加了 java.util.Scanner 类,这是一个用于扫描输入文本的新的实用程序.它是以 前的 StringTokenizer 和 Matcher 类之间的某种结合.由于任何数据都 ...

  7. 求50-100内的素数(java)

    实现代码: public class sushu { public static void main(String[] args) { for(int i=50 ; i<=100; i++){ ...

  8. 记一次【求n以内的素数个数】的优化记录

    最近在leetCode上刷提,还是满锻炼人的,为以后面试打基础吧.不多说下面开始. 问题:求[2,n]之间的素数的个数. 来源:leetCode OJ 提示: Let's start with a i ...

  9. code vs1706 求合数和(数论 素数的判定)

    1706 求合数和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 用户输入一个数,然后输出 ...

随机推荐

  1. xUtils,butterknife...处理findviewbyid

      在写android中,经常要出现大量的findviewbyid et_path = (EditText) findViewById(R.id.et_path); tv_info = (TextVi ...

  2. C# Stream 和 byte[] 之间的转换(文件流的应用)

    一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream( ...

  3. Servlet获取类路径下的资源

    示例程序: package cn.yzu; import java.io.IOException; import java.io.InputStream; import javax.servlet.S ...

  4. 创建一个Portlet工程

    使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...

  5. HTTP基础09--web(1)

    Web 应用 通过 Web 提供功能的 Web 应用 原本应用 HTTP 协议的 Web 的机制就是对客户端发来的请求,返回事前准备好的内容.可随着 Web 越来越普及,仅靠这样的做法已不足以应对所有 ...

  6. delphi override、overload、reintroduce的区别-0613.txt

    http://blog.csdn.net/honglixx/article/details/3624934 1.override overload reintroduce的中文叫法是什么? overr ...

  7. html5大纲

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. header元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 每天一个linux命令---curl

    linux curl是一个利用URL规则在命令行下工作的文件传输工具.详细请参考:http://www.codesky.net/article/201010/170043.html 例如:curl ' ...

  10. 获取ItemsControl中当前item的binding数据

    直接用 {Binding} 就可以了,如下: <ItemsControl ItemsSource="{Binding Path=ProcessItems}"> < ...