Prime
Time Limit:1000MS Memory Limit:30000KB
Description
A prime is the number which can be only divide exactly by 1 or itself.
Input
There several test case. Each test case have two positive integer N,M in one line. (0
Output
For each test case, output one line that contain an integer that is the number of primes from N to M.
Sample Input
5 10
1 3
6 8
Sample Output
2
2
1
Source
Ecnu online judge
#include <stdio.h>
#include <math.h>
#include <malloc.h>
int main(int argc, char **argv)
{
int i = 0;
int j = 0;
int *prime = (int *)malloc(sizeof(int) * 1000001);
for(i = 3; i < 1000001; i+=2)
{
prime[i] = 1;
prime[i + 1] = 0;
}
prime[2] = 1;
for(i = 3; i < 1000001; i++)
{
if(prime[i] == 1)
{
for(j = i + i; j < 1000001; j += i)
prime[j] = 0;
}
}
unsigned int m = 0;
unsigned int n = 0;
while(scanf("%d%d", &m, &n) != EOF)
{
unsigned int count = 0;
for(i = m; i <= n; i++)
if(prime[i] == 1)
count++;
printf("%d\n", count);
}
return 0;
}