C++ 程序:检查完全数


2023年1月31日, Learn eTutorial
1421

这是一个 C++ 程序,用于检查用户输入的数字是否为完全数。

哪些数字可以称为完全数?

如果一个数等于其正约数(不包括该数本身)之和,那么该数就可以称为完全数。例如,28 是一个完全数,因为 28 的约数是 1、2、4、7 和 14。所有这些约数之和等于该数本身。即

28 = 1+2+4+7+14
     = 14+14
     = 28
因此 28 是一个完全数。

如何编写 C++ 程序来检查完全数?

要求用户输入一个数字,并将该数字读入变量 num。这里我们使用 for 循环来检查完全数。将数字存储到变量 num 后,执行 for 循环,初始化 i = 1,条件 i < num,更新 i++。在 for 循环内,使用 if 条件语句获取该数字的约数。

该数字除以 i,并检查余数是否为零,以使用取模运算符检查 i 是否为该数字的正约数。

if(num%i==0)

如果条件为真,则将最初设置为 0 的变量 sum 通过添加 i 来更新其值。i 的值在每次迭代中递增 1。该过程继续进行,直到 for 循环的条件 i < num 变为假。退出循环后,变量 sum 存储了该数字所有正约数的和。现在我们必须使用 if-else 语句将 sum 的值与该数字本身进行比较。

如果条件 num == sum 为真,则打印该数字是一个完全数,否则打印该数字不是一个完全数。

算法

步骤 1: 调用头文件 iostream

步骤 2: 使用 namespace std

步骤 3: 打开主函数;int main()

步骤 4: 声明整数类型变量 num, isum = 0;

步骤 5: 要求用户输入一个数字。

步骤 6: 获取数字到变量 num;

步骤 9: 定义一个 for 循环i = 1,并检查条件 i < num;每次迭代将 i 的值更新 1;

             在循环内,将数字除以 i 并检查余数。

             如果余数为 0;则将 i 添加到 sum

步骤 10: 检查数字是否等于和,然后打印完全数

步骤 11: 否则打印不是完全数

步骤 12: 退出

C++ 源代码

                                          #include<iostream>

using namespace std;
int main()
{
   int num, i, sum=0;
   cout<<"Enter a Number: ";
   cin>>num;
   for(i=1; i<num; i++)
   {
      if(num%i==0)
         sum = sum+i;
   }
   if(num==sum)
      cout<<endl<<num<<" is a Perfect Number.";
   else
      cout<<endl<<num<<" is not a Perfect Number.";
   cout<<endl;
   return 0;
}
                                      

输出

Run 1
Enter a Number: 78
78 is not a Perfect Number.
Run 2
Enter a Number: 496
496 is a Perfect Number.