大数范围内x的倍数

时间:2014-11-09 02:55:19

标签: java math division

我想这是简单的数学,但我无法弄清楚+我是编码的新手。我需要找出在一个范围内可以被x整除的数量。这是一个例子:我需要找到11到30范围内有多少数字可以被3整除。答案是7,我已经编码了它:

while (a <= b) {
    if (a % 3 == 0) {
        c++;
        a++;
    else {
        a++;
    }
}

然而,当我检查每一个数字时,这对于大数字来说非常糟糕。我尝试了c = (b-a)/3,但显然这对所有示例都不起作用,就像它不适用于上面那样。那么,请你帮我找一些简单的方程式来计算这个。我觉得因为无法解决这个问题而感到非常愚蠢。

2 个答案:

答案 0 :(得分:2)

在psudo-code中:

  1. 计算可被3整除的最小数字 ac = math.ceil(a / 3) * 3
  2. 计算可被3整除的最大数字,小于 bd = math.floor(b / 3) * 3
  3. 答案是(d - c) / 3 + 1
  4. 1130的示例中,c12d30,最终答案为{{ 1}}。

答案 1 :(得分:0)

你很亲密!做一些事情(不知道你在编码什么,所以这将是伪代码):

function numDiv(int a, int b, int divBy) {
int x;
if(a>b) x=1+a-b;
else x=1+b-a;
return floor(x/divBy);
}

地板和+1会让你到那里。