求出范围内所有的素数

求出范围内所有素数

Description

给出整数a,b,求出区间[a,b]内的所有素数。

Input

有多组测试数据。输入的第一行是整数T(0<T<=1000),表示测试数据的组数。每一组测试数据只有一行,分别为整数a和b,两数之间有一个空格。该行没有其它多余的符号。0<a<b<2^16。

Output

对应每组输入,输出一行[a,b]区间内所有的素数,每个数后应有一个空格,如果[a,b]区间内没有素数,则该行为空行。该行不能有其它多余的符号。

Sample Input

2
1 100
50 100

Sample Output

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
53 59 61 67 71 73 79 83 89 97

Hint

可以考虑筛法求素数。

Source  






#include <cstdio>
 #include <cstring>
 
 const int max_n = 70000;
 
 int main()
 {
 	int flag[max_n];
 	memset(flag, 0, sizeof(flag));
 	flag[1] = 1;
 	int start = 2;
 	while ( start * start < max_n )
 	{
 		for ( int i = start; i < max_n; ++i )
 		{
 			if ( !flag[i] )
 			{
 				start = i;
 				break;
 			}
 		}
 		for ( int i = start * start; i < max_n; i += start )
 		{
 			flag[i] = 1;
 		}
 		start++;
 	}
 
 	int t, a, b;
 	scanf("%d", &t);
 	while ( t-- )
 	{
 		scanf("%d %d", &a, &b);
 		for ( int i = a; i <= b; ++i )
 		{
 			if ( !flag[i] )
 			{
 				printf("%d ", i);
 			}
 		}
 		printf("\n");
 	}
 	return 0;
 }
 

此题为UESTC 1246,水题,素数筛选法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值