C++ 中统计给定数字 N 中能整除 N 的数字个数


假设给定一个数字 N,任务是找到该数字中能整除 N 的数字的个数。

需要记住的要点

  • 如果数字是 0,则应忽略它,这意味着数字 0 的计数不会增加。

  • 如果一个数字出现两次并且它能整除该数字,那么计数将取决于该数字出现的次数。例如,给定一个数字 2240,在这个数字中,除了 0 之外的每个数字都能整除该数字,并且数字 2 出现了两次,那么数字 2 的计数将为 2。

输入 - 数字 = 2240

输出 - 计数为 3

解释 - 将数字分解成各个数字,结果将是 2、2、4、0。现在检查 2 是否能整除 2240,如果可以,则增加计数,否则移动到下一个数字,在这个数字中,2、2、4 能整除 2240,所以计数将为 3,并且在任何情况下都忽略数字 0。

输入 - 数字 = 755

输出 - 计数为 2

解释 - 将数字分解成各个数字,结果将是 7、5、5。现在检查 7 是否能整除 755,如果可以,则增加计数,否则移动到下一个数字,在这个数字中,5、5 能整除 755,所以计数将为 2,并且在任何情况下都忽略数字 0。

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

  • 将数字输入到一个整数变量中,例如 num

  • 启动循环,直到 num 大于 0

  • 在循环内部,将数字分解成各个数字,并将结果存储在一个变量中,例如 rem

  • 检查 rem 是否能整除该数字,如果可以,则将计数变量的值增加 1,如果不能,则不增加计数变量的值。

  • 当 rem 大于 0 时应用此检查语句,因为我们必须忽略 0。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
int count(int num){
   int a=num;
   int count=0,rem;
   while(a>0){
      rem=a%10;
      if(rem > 0){
         if(num%rem==0){
            count++;
         }
      }
      a=a/10;
   }
   return count;
}
int main(){
   int num = 2240;
   cout<<"Count of digits in given number "<<num<<" which divide N are: "<<count(num);
   return 0;
}

输出

如果运行以上代码,将获得以下输出:

Count of digits in given number 2240 which divide N are: 3

更新于: 2020-06-06

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告