问题链接:POJ NOI0113-10 判决素数个数。
判决素数个数
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。
输入
- 两个整数X和Y(1 <= X,Y <= 10 5)。 输出
- 输出一个整数,表示X,Y之间的素数个数(包括X和Y)。 样例输入
-
1 100
样例输出
-
25
问题链接:Bailian3177 判决素数个数
问题分析:(略)程序说明:题意没有说x和y哪个大,还是比较交换一下比较放心。单独考虑偶数可以使得判定素数的程序做得更加快一些。
AC的C语言程序如下:
/* Bailian3177 判决素数个数 */
#include <stdio.h>
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
int isprime(int n)
{
int i;
for(i=3; i*i<=n; i+=2)
if(n % i == 0)
return 0;
return 1;
}
int main(void)
{
int x, y, sum=0, i;
scanf("%d%d", &x, &y);
if(x > y)
swap(&x, &y);
if(x <= 2) {
x = 3;
sum = 1;
} else {
if(x % 2 == 0)
x++;
sum = 0;
}
for(i=x; i<=y; i+=2)
if(isprime(i))
sum++;
printf("%d\n", sum);
return 0;
}