您的位置:首页 > 其它

求出范围内所有素数

2013-10-17 21:47 106 查看

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

可以考虑筛法求素数。

解答:

#include <stdio.h>
int i,j,t,k;
int a[65535]={0};
int b[1001],c[1001];
int main()
{

scanf("%d",&t);
for (i=0;i<t;i++) scanf("%d %d",&b[i],&c[i]);
for (k=0;k<t;k++)
{
if (b[k]==1) b[k]=2;
for(i=b[k]; i<=c[k]; i++) //因为0 1不是素数,所以跳过
{
a[i]=1;
}

for(i=b[k]; i<=c[k]; i++)
{
if(a[i]==1)
{
printf("%d ", i);
for(j=b[k]; j<=c[k]; j+=i)
{
if(j%i==0) a[j]=0;
}
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: