高速查找素数

高速查找素数

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

描写叙述
如今给你一个正整数N,要你高速的找出在2.....N这些数里面全部的素数。

输入
给出一个正整数数N(N<=2000000)

但N为0时结束程序。

測试数据不超过100组

输出
将2~N范围内全部的素数输出。两个数之间用空格隔开
例子输入
5
10
11
0
例子输出
2 3 5
2 3 5 7
2 3 5 7 11
来源
经典题
上传者

路过这

素数打表。提交開始超时。改成c语言的就过了

#include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
using namespace std;
int a[2000001];
void sushu()
{
	int i,j;
	a[0]=a[1]=1;
	for(i=2;i<=sqrt(2000000);i++)
	{
		if(a[i]==0)
		{
			for(j=i*i;j<=2000000;j+=i)
			{
				a[j]=1;
			}
		}
	}
}
int main()
{
	sushu();
	int N,i,time;
	while(scanf("%d",&N) && N)
	{
		time=0;
		if(N>=2)
		   printf("2");
         for(i=3;i<=N;i++)
		 {
			 if(a[i]==0)
				 //cout<<" "<<i;
				printf(" %d",i);
		 }
		 cout<<endl;
	}
	return 0;
}         
时间: 2024-10-31 18:03:04

高速查找素数的相关文章

试探究一种查找素数算法

解题思路:构造链表,使用筛除法 例如:求10以内素数 链表初始化:2 3 4 5 6 7 8 9 10 进行第一轮筛选后:2 3 5 7 9 也就是用2后面的数去除2, 第二轮筛选后:2 3 5 7 也就是用3后面的数去除3, 第三轮筛选后:2 3 5 7 也就是用5后面的数去除5 第四轮筛选后:2 3 5 7 代码: #include <stdio.h> #include <stdlib.h> #define N 1e5 // over this it is so slowly

JS获取中文拼音首字母,并通过拼音首字母高速查找页面内的中文内容

实现效果: 图一: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVzdGNzX2Ru/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" /> 图二: 此例中输入的中文字符串"万万保重",有三个字是多音字.所以alert对话框中显示的是多种读音的组合. 怎样实现? 怎样实现通过拼音首字母高速查找页面内的中文内容呢? 过程原

JAVA程序猿怎么才干高速查找到学习资料?

JAVA程序猿怎么才干高速查找到学习资料? JAVA学习资料在互联网上较为零散,并且大多是英文的.以下介绍3种方式,让程序猿能够高速地找到自己想要的资料. 一.导航站点: 有非常多类似hao123的站点,整合了非常多程序相关的资源,比如有一个"精简导航",依照语言的分类,整合了非常多的学习资源,网址是http://www.brieftools.info/ ,我们仅仅须要进入导航站,找到JAVA相应的资源就可以.导航上还有非常多其它语言的资源,假设后期准备学站点相关的东西,导航上面也有相

NYOJ 快速查找素数

快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N<=2000000) 但N为0时结束程序. 测试数据不超过100组 输出 将2~N范围内所有的素数输出.两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 #include<cstdio> #include<cstdlib>

快速查找素数

快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N<=2000000) 但N为0时结束程序. 测试数据不超过100组 输出 将2~N范围内所有的素数输出.两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 来源 经典题 上传者 路过这 素数打表.提交开始超时.改成c语言的就过了 #includ

快速查找素数 NYOJ 187

1 #include<stdio.h>//快速查找素数(187) 2 int a[2000001]; 3 int main() 4 { 5 int m,i,j; 6 for(i=2;i<=2000000;i++){ 7 if(a[i]==0){ 8 for(j=i+i;j<=2000000;j=j+i){ 9 a[j]=1; 10 } 11 } 12 } 13 while(scanf("%d",&m)&&m!=0){ 14 for(i=2

NYOJ--187--快速查找素数(筛选法,素数打表)

快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N<=2000000)但N为0时结束程序.测试数据不超过100组 输出 将2~N范围内所有的素数输出.两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 1 /* 2 Name: NYOJ--187--快速查找素数 3 Copyright: ?2

NYOJ 187 快速查找素数

快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N<=2000000) 但N为0时结束程序. 测试数据不超过100组 输出 将2~N范围内所有的素数输出.两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 打一下表就可以了 #include<stdio.h> #include<m

关于素数的快速查找——素数筛选法

利用素数筛选法进行素数的快速查找.原理很简单,素数一定是奇数,素数的倍数一定不是素数.思路如下: 预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行标记,奇数存为1,偶数存为0,最终实现结果为素数的prime值为1,因此将prime[2]赋值为1(2是素数).之后利用for循环,对N以内的奇数进行遍历(注意for循环的条件控制),for里用if判断是否为素数(奇数),若是,执行内部嵌套的for循环判断该奇数是否为素数,若是则标记为1,若不是则pri