给定两个整数a,b,输出a,b之间的所有质数。
输入样例
3 10
输出样例
3 5 7
#include <iostream>
#include <cmath>
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] << " ";
}
}