我刚刚开始编码,请耐心等待。我尝试做这个简单的任务(至少它看起来很简单),它指出:"读取两个整数,然后写出所有可以分别为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);
}
}
答案 0 :(得分:1)
如果您只需要计算这些数字,您可以通过使用一些数学,即包含排除原则来大大加快程序。
我将N(x)称为可被x整除的范围内的数字。
答案是N(2)+ N(3)+ N(5) - N(6) - N(10) - N(15)+ N(30)。
我把它留作练习确定N(x);提示:它将接近范围/ x。