POJ 3978(求素数)

来源:互联网 发布:淘宝男士短袖 编辑:程序博客网 时间:2024/05/18 21:46
知识点:
     1.求素数的test,从2~sqrt(n);
    
     2.如果数据很多,可以用素数表记录,然后sum=prime[m]-prime[n]求得!!!!!!!!!!!



                                                                                             Primes
Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 3204Accepted: 1245


Description

A pretty straight forward task, calculate the number of primes between 2 integers. 

Given 2 integers A ≤ B < 105 what’s the number of primes in range from A to B inclusive. 

Note: A prime number is a positive integer greater than 1 and is divisible by 1 and itself only. For N to be prime it is enough to test the divisibility of numbers less than or equal to square root of N.

Input

As many as 1000 lines, each line contains 2 integers A and B separated by a space. Input is terminated when A = B = -1 (Do not process this line).

Output

For every line in input – except for the last line where A = B = -1 - print the number of prime numbers between A and B inclusive.

Sample Input

0 99991 5-1 -1

Sample Output

12293


#include<iostream>#include<cstdio>#include<cmath>using namespace std;bool is_prime(int n){    if(n<=0||n==1)                 //贡献1 WA,a,b可能小于0;so n<=0 return false;        return false;    for(int i=2;i<=sqrt((double)n);i++)    {        if(n%i==0)            return false;    }    return true;}int main(){    int a,b;    int sum;    while(1)    {        sum=0;        scanf("%d%d",&a,&b);        if(a==-1&&b==-1)            break;        for(int i=a;i<=b;i++)            if(is_prime(i))                ++sum;        printf("%d\n",sum);    }    return 0;}



1 0
原创粉丝点击