FZU 1563 Prime Numbers

Accept: 332Submit: 1218
Time Limit: 1000 mSecMemory Limit : 32768 KB

Problem Description

Compute the number of prime numbers in a given interval.

A prime number is an integer p greater than 1 whose only positive divisors are 1 and p.

Input

The first line contains the number of test cases T (T<=1000).

Each test case contains a single line with two numbers separated by a single space: a and b, 2 <= a <= b <= 1000000.

Output

For each test case output a single line, containing the number of primes between a and b inclusive.

Sample Input

2 2 7 3 1000000

Sample Output

4 78497
//注意范围(1-1000000)
//想不到好的办法, 这样做在Foj运行时间为0.8s左右,,.....
//如果有好的方法的希望留言,,谢谢了
#include<iostream> #include<cmath> using namespace std; const int MAX=1000000; bool isprime[MAX+1]; int prime[MAX]; int pnum; void getprime() { int i,j; memset(isprime,0,sizeof(isprime)); pnum=0; for(i=2;i<=MAX;i++) { if(!isprime[i]) prime[pnum++]=i; for(j=0;j<pnum&&prime[j]*i<=MAX;j++) { isprime[prime[j]*i]=1; if(i%prime[j]==0) break; } } } int main() { int n,a,b,count,i; getprime(); while(scanf("%d",&n)!=EOF) { while(n--) { count=0; scanf("%d%d",&a,&b); for(i=a;i<=b;i++) if(isprime[i]==0) count++; printf("%d/n",count); } } return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值