C++中计算区间内能被所有非零数字整除的数字
我们提供两个数字START和END来定义一个数字范围。目标是找到[START,END]范围内所有能被其所有非零数字整除的数字。我们将通过遍历从START到END的数字来实现这一点,对于每个数字,我们将使用while循环检查该数字是否能被所有非零数字整除。如果是,则计数器加1。
让我们通过例子来理解。
输入
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)接收范围变量并返回能被所有非零数字整除的数字个数。
将初始变量count设置为0,表示此类数字的个数。
将变量flag设置为0。
使用for循环遍历数字范围。i=start到i=end。
现在,对于每个数字num=i,使用while循环检查数字是否>0。
计算digit=num%10。如果digit>0且i%digit==0,则设置flag=1。否则,flag=0并中断循环。将num=num/10以检查下一个数字。
如果所有非零数字都能完全整除i,则flag为1。计数器加1。
在所有循环结束时,count将包含能被非零数字整除的总数。
返回count作为结果。
示例
#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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP