使用函数在两个区间之间显示质数的 C++ 程序


2023 年 1 月 22 日, Learn eTutorial
1885

什么是素数?

在 C++ 中,我们可以将质数(或质整数,通常简称为“质数”)定义为除了 1 和其本身之外没有其他因数的正整数。例如:2, 3, 5, 7, 11。

如何在 C++ 中使用函数在两个区间之间显示质数

这里,程序从用户那里获取两个正整数,并显示这两个数字之间的质数。为此,我们必须检查此区间中的每个数字,并判断它是否是质数。为了检查质数,创建了一个函数 check_prime()。此函数检查给定数字是否是质数。要求用户输入两个正整数并将数字读入变量 n1n2。如果用户先输入一个大数字,那么我们必须交换这些数字。不交换,这个程序将无法工作。

现在,我们必须打开一个循环,从 n1 到 n2 获取每个数字,并将此数字传递给我们创建的函数。如果该数字是质数,此函数将返回 true;如果它是质数,我们必须打印该数字并继续循环。

算法

步骤 1:调用头文件 iostream。

步骤 2: 使用 namespace std

步骤 3:声明两个整数类型变量 n1n2 和布尔类型变量 flag

步骤 4:要求用户输入两个正整数;

步骤 5:将数字读入变量 n1n2

步骤 6:如果 n1 > n2,则交换这两个数字

步骤 7:从 i = n1 + 1 到 i < n2 迭代循环。
           检查输入的数字是否为 0 或 1。如果为真,则打印 n 不是质数
            否则,执行循环检查 n 是否为质数。
            初始化 i=2 并继续循环直到 i <= n/2;
            检查是否 (n % i = 0 ) 
                  如果是,则将 is_prime = false;
                  如果 is_prime 为真,则打印 n 为质数

步骤 8:将 flag 设置为 true;

步骤 9:在屏幕上打印结果

步骤 10:退出

C++ 源代码

                                          #include <iostream>
using namespace std;

int check_prime(int);

int main() {

  int n1, n2;
  bool flag;

  cout << "Enter two positive integers: ";
  cin >> n1 >> n2;

  // swapping n1 and n2 if n1 is greater than n2
  if (n1 > n2) {
    n2 = n1 + n2;
    n1 = n2 - n1;
    n2 = n2 - n1;
  }

  cout << "Prime numbers between " << n1 << " and " << n2 << " are:\n";

  for(int i = n1+1; i < n2; ++i) {
    // if i is a prime number, flag will be equal to 1
    flag = check_prime(i);

    if(flag)
      cout << i << ", ";
  }

  return 0;
}

// user-defined function to check prime number
int check_prime(int n) {
  bool is_prime = true;

  // 0 and 1 are not prime numbers
  if (n == 0 || n == 1) {
    is_prime = false;
  }
  
  for(int j = 2; j <= n/2; ++j) {
    if (n%j == 0) {
      is_prime = false;
      break;
    }
  }

  return is_prime;
}
                                      

输出

Enter two positive integers: 10
40
Prime numbers between 10 and 40 are:
11, 13, 17, 19, 23, 29, 31, 37,