快速查找素数

快速查找素数

时间限制: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-08 01:53:12

快速查找素数的相关文章

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>

快速查找素数 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 打一下表就可以了 #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

Perl快速查找素数

查找N内的所有素数,首先想到的就是: 对整数N从2开始到sqrt(N),进行整除计算,能整除则计算N+1,然后循环.方法简单,但效率低下.1000,000内的素数个数: #!/usr/bin/perl -w use strict; my $num=1000001; my $count=0; while($num>1){ my $i=sqrt($num); my $j=2; for(;$j<=$i;$j++){ last if(0==$num%$j); } $count++ if($j>$

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

自定义快速查找字母控件

效果图如下: 首先看看布局文件,自定义的控件中包含一个 ListView,用于显示具体的数据内容: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     a

试探究一种查找素数算法

解题思路:构造链表,使用筛除法 例如:求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获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容

实现效果: 图一: 图二: 此例中输入的中文字符串"万万保重",有三个字是多音字,所以alert对话框中显示的是多种读音的组合: 如何实现? 如何实现通过拼音首字母快速查找页面内的中文内容呢? 过程原理是这样的:例如要对一些人名进行快速查找,当页面加载完成后,对所有人名建立一个索引,生成拼音首字母与姓名的对应关系:然后监听键盘事件,当用户按下键盘时,根据键值得到按下的是哪个字母,然后遍历索引中是否存在相同的拼音首字母: 这里还实现了根据字母组合来查找的功能,原理是这样的:当用户按键时,