在C++中计算给定范围内A或B的总除数


我们给出四个整数L、R、A和B。目标是找到[L,R]范围内完全整除A或B或两者之一的数字个数。

我们将从L遍历到R,对于每个数字,如果number%A==0或number%B==0,则增加除数计数。

让我们通过例子来理解。

输入 − L=10, R=15, A=4, B=3

输出 − A或B的除数个数 − 2

解释

Number 12 is fully divisible by 3 and 4.
Number 15 is fully divisible by 3 only.
Total divisors=2

输入 − L=20, R=30, A=17, B=19

输出 − A或B的除数个数 − 0

解释 − 20到30之间没有完全可被A或B或两者整除的数字。

下面程序中使用的算法如下

  • 我们使用了四个变量A、B、L和R。

  • 函数countDivisors(int l, int r, int a, int b) 将所有输入作为输入,并返回位于[L, R]范围内的A或B或两者的除数。

  • 将初始计数设置为0。

  • 从i=L到i=R,如果i%a==0或i%b==0,则递增计数。

  • 循环结束时,计数为A或B的除数。

  • 返回计数作为结果。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
int countDivisors(int l, int r, int a,int b){
   int count = 0;
   for (int i = l; i <= r; i++){
      if(i%a==0 || i%b==0)
         { count++ ; }
   }
   return count;
}
int main(){
   int L=5;
   int R=15;
   int A=2;
   int B=5;
   cout <<endl<< "Total divisors of A and B : "<<countDivisors(L,R,A,B);
   return 0;
}

输出

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

Total divisors of A and B : 7

更新于:2020年8月29日

299 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告