代码不适用于大数字

时间:2014-11-09 00:58:27

标签: java long-integer

我刚刚开始编码,请耐心等待。我尝试做这个简单的任务(至少它看起来很简单),它指出:"读取两个整数,然后写出所有可以分别为2,3或5的代码。我的代码没有问题处理数量不多,但是当我进入数百万时它会变得复杂。程序只是超时,或者需要花费大量的时间来计算。帮助赞赏!

import java.util.Scanner;

class Veckratniki {
    public static void main(String[] args) {
        long v = 0;
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong();
        long b = sc.nextLong();
        while (a <= b) {
            if ((a % 2 == 0) || (a % 3 == 0) || (a % 5 == 0)) {
                v++;
                a++;
            } else {
                a++;
            }
        }
        System.out.println(v);
    }
}

1 个答案:

答案 0 :(得分:1)

如果您只需要计算这些数字,您可以通过使用一些数学,即包含排除原则来大大加快程序。

我将N(x)称为可被x整除的范围内的数字。

答案是N(2)+ N(3)+ N(5) - N(6) - N(10) - N(15)+ N(30)。

我把它留作练习确定N(x);提示:它将接近范围/ x。