计算范围内的数字,该数字可以被C ++中的所有非零数字整除

我们提供了两个数字START和END来定义一个数字范围。目标是找到[START,END]范围内的所有非零数字都可整除的数字。我们将通过从START到END遍历数字来完成此操作,对于每个数字,我们将使用while循环检查数字是否可被所有非零数字整除。如果是,则增加计数。

让我们通过示例来理解。

输入值 

START=10 END=20

输出结果 

Numbers that are divisible by all its non-zero digits: 14

说明 

Numbers 10, 11, 12, 15, 20 are divisible by all their non-zero digits.

输入值 

START=100 END=200

输出结果 

Numbers that are divisible by all its non-zero digits: 25

说明 

This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200

以下程序中使用的方法如下

  • 我们将整数START和END作为范围变量。

  • 函数divisiblebyDigits(int start,int end)接受范围变量,并返回可被其所有非零数字整除的数字的计数。

  • 对于此类数字,将初始变量计数设为0。

  • 将变量标志设为0

  • 使用for循环遍历数字范围。我=开始我=结束

  • 现在,对于每个数字num = i,使用while循环检查数字是否大于0。

  • 计算digit = num%10。如果digit> 0并且i%digit == 0,则设置标志= 1。其他标志= 0并中断。减少num = num / 10以检查下一位数字。

  • 如果所有非零数字完全除以i,则标志为1。递增计数。

  • 在所有循环结束时,计数将有一个可被非零数字整除的总数

  • 返回计数结果。

示例

#include <bits/stdc++.h>
using namespace std;
int divisiblebyDigits(int start, int end){
   int count = 0;
   int flag=0;
   for (int i = start; i <= end; i++){
      int num=i;
      while(num>0){
         int digit=num%10;
         if(digit>0){
            if(i%digit==0)
               { flag=1; } //set flag
            else{
               flag=0; //un-set flag
               break;
            }
         }
         num=num/10;
      }
      if(flag==1) //divisible by all non-zero digits {
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int START = 10, END = 50;
   cout <<"Numbers that are divisible by all its non-zero digits: "<< divisiblebyDigits(START,END);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Numbers that are divisible by all its non-zero digits: 14
猜你喜欢