C++中计算[L, R]范围内所有偶数的个数,其各位数字之和能被3整除


给定两个数字L和R,定义一个范围[L,R]。目标是在L和R之间找到所有偶数,并且其各位数字之和能被3整除。

我们将通过计算L和R之间所有偶数的各位数字之和,如果该和%3==0,则计数器加1。

让我们通过例子来理解。

输入 − L=10, R=20

输出 − [L, R]范围内所有偶数的个数,其各位数字之和能被3整除:2

解释 − 10和20之间的偶数:10,12,14,16,18,20。其各位数字之和能被3整除的数是12和18。

输入 − L=100, R=108

输出− [L, R]范围内所有偶数的个数,其各位数字之和能被3整除:2

解释 − 100和108之间的偶数:100,102,104,106,108。其各位数字之和能被3整除的数是102和108。

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

  • 我们首先取变量first和last来定义范围。

  • 函数Digit_sum(int num)接收数字并返回其各位数字之和。

  • 使用while循环,直到num!=0,将num%10(个位数字)添加到total中。

  • 将num除以10以减少它。

  • 最后,total将包含所有数字的和。

  • 函数divisible_3(int first, int last)接收数字范围并返回各位数字之和能被3整除的偶数的个数。

  • 从索引i=first到i<=last开始。检查数字i是否为偶数。(i%2==0)。

  • 如果是,则通过调用Digit_sum(i)计算i的各位数字之和。如果该和%3==0,则计数器加1。

  • 在for循环结束时,返回count作为结果。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
int Digit_sum(int num){
   int total = 0;
   while (num!= 0){
      total += num % 10;
      num = num / 10;
   }
   return total;
}
int divisible_3(int first, int last){
   int count = 0;
   for (int i = first; i <= last; i++){
      if (i % 2 == 0 && Digit_sum(i) % 3 == 0){
         count++;
      }
   }
   return count;
}
int main(){
   int first = 300, last = 500;
   cout<<"Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: "<<divisible_3(first, last);
   return 0;
}

输出

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

Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: 34

更新于:2020-08-31

258 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告