C++ 程序检查一个数字是否为素数


2023 年 1 月 18 日, Learn eTutorial
2020

在此 C++ 程序中,我们将检查用户输入是否为素数。

什么是素数?

 一个素数素整数(通常简称“素数”)是一个正整数,除了 1 和它本身之外没有其他除数。 

例如 2、3、5、7、11。让我们以数字“5”为例,它是一个素数,因为数字“5”只有两个除数:“1”和“5”。所以素数只有两个除数。但是,4不是素数(它是合数),因为 2 x 2 = 4。

注意:数字“1不是素数,因为它只有一个除数。

Prime Number

如何在 C++ 中实现素数检查?

从用户那里获取一个正整数并将其存储在变量n中。一开始将布尔变量is_prime设置为 true。0 和 1 不是素数,所以我们首先要检查输入的数字是否为 0 或 1。如果数字是 0 或 1,则is_prime的值设置为 false。


if ( n= 0 // n=1 )
{ 
   is_prime = false 
}
 

否则,is_prime的值保持不变。即;is_prime = true;

然后检查数字是否可以被其他数字整除。这可以在 for 循环的帮助下完成。将i的值初始化为 2。循环将从“i =2”到“i <= n/2”开始,并且每次迭代将“i”的值增加“1”。循环在“i = n/2”处终止,因为我们无法找到超出“n/2”的因子。 如果用户输入的数字可以被“i”完美整除,那么is_prime被设置为 false,并且该数字将不是素数。我们使用模运算符在 if 条件 'n % i == 0' 中检查数字的可除性。

但是,如果输入的数字在整个循环中不能被“i”完美整除,则表示输入只能被“1”和它本身整除。因此,给定的输入是一个素数。

算法 

步骤 1: 调用头文件 iostream.

步骤 2:使用 namespace std。

步骤 3:打开 main()

步骤 4:声明整数类型变量n; 将布尔变量is_prime初始化为 true

步骤 5:打印一条消息以输入一个正整数。

步骤 6:将字符读入变量n;

步骤 7:检查输入的数字是 0 还是 1。如果为 true,则打印n不是素数

步骤 8:否则,执行循环以检查n是否为素数。

步骤 9:初始化i=2 并继续循环直到i<= n/2;

步骤 10:检查 (n % i== 0 ) 

步骤 11:如果为是,则设置is_prime = false;

步骤 12:如果is_prime为 true,则打印n为素数

步骤 13:否则打印n不是素数

步骤 14:退出。

C++ 源代码

                                          #include <iostream>
using namespace std;

int main() {

  int i, n;
  bool is_prime = true;

  cout << "Enter a positive integer: ";
  cin >> n;

  // 0 and 1 are not prime numbers
  if (n == 0 || n == 1) {
    is_prime = false;
  }

  // loop to check if n is prime
  for (i = 2; i <= n/2; ++i) {
    if (n % i == 0) {
      is_prime = false;
      break;
    }
  }

  if (is_prime)
    cout << n << " is a prime number";
  else
    cout << n << " is not a prime number";

  return 0;
}
                                      

输出

Enter a positive integer: 8
8 is not a prime number
Run 2 
Enter a positive integer: 5
5 is a prime number