- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。
- 输入
- 两个整数X和Y(1 <= X,Y <= 105)。
- 输出
- 输出一个整数,表示X,Y之间的素数个数(包括X和Y)。
- 样例输入
1 100
样例输出
25
分析:
由于 1 <= X,Y <= 105 因此不能在开始时将素数都算出来,保存在数组里(因为开不了那么大的数组)。
遍历X到Y,判断每一个数是否为素数,注意题目给的X和Y可能会 X > Y,这时候要交换一下
代码:
#include <cstdio> #include <cstring> #include <cmath> bool isPrime(int x){ if(x == 1)return false; if(x % 2 == 0 && x != 2)return false; else{ for(int i = 3;i < sqrt(x)+1;i += 2){ if(x % i == 0)return false; } return true; } } int main(){ int x,y; scanf("%d%d",&x,&y); int sum = 0; if(x > y){ int t; t = x; x = y; y = t; } for(int i = x;i <= y;i++){ if(isPrime(i) == true)sum++; } printf("%d ",sum); return 0; }