给定两个整数a,b,输出a,b之间的所有质数。
输入样例
3 10
输出样例
3 5 7
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
using namespace std;
const int N = 1e6 + 10;
int primes[N]; //用于存储素数
int a,b;
int k;
bool is_prime(int x){
/*
一个数 x 分解成两个数的乘积,则这两个数中,一定有一个数大于根号 x,一个数小于根号x。
所以,可以用 x 除以 2 ~ 根号x 中的每个数,如果出现了余数为 0,则这个数不是质数,如果没有出现余数为 0,则这个数是质数。
*/
if(x < 2) return false;
for(int i = 2;i<=sqrt(x);i++){
if(x%i == 0) return false;
}
return true;
}
void get_primes(){
if(a>=2 && b>=2){
for(int i = a;i<=b;i++){
if(is_prime(i)){
primes[k++] = i;
}
}
}
}
int main() {
cin >> a >> b;
get_primes();
for(int i = 0;i<k;i++){
cout << primes[i] << " ";
}
}