给定两个整数a,b,输出a,b之间的所有质数。
输入样例
3 10
输出样例
3 5 7

cpp
  • 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
#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] << " "; } }