我们提供了两个数字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