C++ 中的可分解数


给定一个整数类型的值,例如 number。任务是检查给定的数字是否可分解。如果是,则打印该数字是可分解数;否则,打印“不可能”。

什么是可分解数?

当一个数可以被其因数的总数整除时,它就是一个可分解数。例如,数字 9 是可分解的,因为它共有 3 个因数(1、3、9),而 9 可以被 3 整除,因此它是一个可分解数。

让我们看看这个的不同输入输出场景:

输入 - int number = 9

输出 - 它是一个可分解数

解释 - 当一个数可以被其因数的总数整除时,它就是一个可分解数。给定数字 9,它是一个可分解数,因为它共有 3 个因数(1、3、9),而 9 可以被 3 整除,因此它是一个可分解数。

输入 - int number = 10

输出 - 它不是一个可分解数

解释 - 当一个数可以被其因数的总数整除时,它就是一个可分解数。给定数字 10,它不是一个可分解数,因为它共有 4 个因数(1、2、5、10),而 10 不能被 4 整除,因此它不是一个可分解数。

下面程序中使用的方案如下:

  • 输入一个整数类型的变量,例如 number。

  • 将数据传递给 bool 类型的函数 check_Refactorable(int number)。

  • 在函数 check_Refactorable(int number) 内部:

    • 声明一个整数类型变量 count,初始化为 0。

    • 从 i = 1 开始循环,直到 i 小于 sqrt(number)。在循环内,检查 IF number % i == 0,然后检查 IF number / i == i,如果是,则将 count 加 1。

    • 否则,将 count 设置为 count + 2。

    • 返回 number % count == 0

  • 打印结果。

示例

#include <bits/stdc++.h>
using namespace std;
bool check_Refactorable(int number){
   int count = 0;
   for (int i = 1; i <= sqrt(number); ++i){
      if(number % i==0){
         if(number / i == i){
            ++count;
         }
         else{
            count += 2;
         }
      }
   }
   return number % count == 0;
}
int main(){
   int number = 9;
   if(check_Refactorable(number) == 1){
      cout<<"It is a Refactorable number";
   }
   else{
      cout<<"It isn't a Refactorable number";
   }
   return 0;
}

输出

如果运行上述代码,它将生成以下输出:

It is a Refactorable number

更新于:2021年11月3日

102 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告