题目描述
给你两个数a、b,现在的问题是要判断这两个数组成的区间内共有多少个素数
输入
多组测试数据。 每个测试数据输入两个数a、b。(2<=a,b<=1000)
输出
输出该区间内素数的个数。
样例
输入
2 4
4 6
输出
2
1
输入时有个坑,没说a和b哪个更大,所以需要提前判断,做好准备
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int w[N] = {1, 1};
void isPrim_init()
{
for (int i = 2; i < 1010 / i; i++)
{
if (!w[i])
{
for (int j = i * i; j < 1010; j += i)
{
w[j] = 1;
}
}
}
}
int isPrim(int a, int b)
{
int ans = 0;
for (int i = a; i <= b; i++)
{
if (!w[i]) ans++;
}
return ans;
}
int main()
{
isPrim_init();// 初始化区间内所有素数
int a, b;
while (cin >> a >> b)
{
if (a > b)
{
int c = a;
a = b;
b = c;
}// 确保 a < b
int ans = isPrim(a, b);
cout << ans << endl;
}
return 0;
}