计算范围内的数字,该数字可以被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(intstart,intend)接受范围变量,并返回可被其所有非零数字整除的数字的计数。
对于此类数字,将初始变量计数设为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