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<math.h>
int prime[2000010];
int main()
{
	int N;
	int i,j;
	for(i=2;i<2000010;i++)
		if(i%2==1)  prime[i]=1;
		else  prime[i]=0;
		for(i=3;i<=sqrt(2000010);i++)
		{
			if(prime[i])
			for(j=i+i;j<2000010;j+=i)
			prime[j]=0;
		}
	while(scanf("%d",&N),N)
	{
		printf("2");
		for(i=0;i<=N;i++)
		if(prime[i])
		printf(" %d",i);
		printf("\n");
	}
	return 0;
}

NYOJ 187 快速查找素数

时间: 2024-10-25 15:45:44

NYOJ 187 快速查找素数的相关文章

快速查找素数 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 快速查找素数

快速查找素数 时间限制: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

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

利用素数筛选法进行素数的快速查找.原理很简单,素数一定是奇数,素数的倍数一定不是素数.思路如下: 预定义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

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 快速查找素数 这道题目考察的是素数的筛法,不过需要注意的点就是如何写筛法.下面的一种是超时的

自定义快速查找字母控件

效果图如下: 首先看看布局文件,自定义的控件中包含一个 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