示例:两个区间内的素数
// C++ Program to Print Prime Numbers between two Numbers
#include <iostream>
bool isPrime(int);
void printPrime(int num1, int num2);
int main(){
int num1, num2;
std::cout << "Enter two positive integers: ";
std::cin >> num1 >> num2;
printPrime(num1, num2);
}
// prints the prime number between num1 and num2
void printPrime(int num1, int num2){
if (num1 > num2){
// swap if num1 is greater than num2
std::swap(num1, num2);
}
for(int i = num1 + 1 ; i < num2 ; ++i){
if (isPrime(i)){
std::cout << i << " ";
}
}
}
// returns true is the given number is true false otherwise
bool isPrime(int n){
bool is_prime = true;
// 0 and 1 are not prime numbers
if (n == 0 || n == 1) {
return false;
}
for(int i = 2; i <= n/2; ++i) {
if (n % i == 0) {
return false;
}
}
return is_prime;
}
输出
Enter two positive integers: 12 55 Prime numbers between 12 and 55 are: 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53
为了打印两个整数之间的所有素数,创建了 `printPrime()` 函数。该函数内部调用 `isPrime` 函数,该函数 检查一个数字是否为素数。
介于 n1 和 n2 之间的所有整数都传递给 `isPrime` 函数。
如果传递给 `isPrime()` 的数字是素数,则此函数返回 `true`,并且该数字将写入标准输出;否则,该函数返回 `false` 且不执行任何操作。
如果用户先输入较大的数字,此程序将首先 交换这两个数字。此程序在没有交换的情况下将无法工作,因为在 `printPrime` 函数的 for 循环内部,假定 num1 始终大于 num2。