打印出可被其他数字整除的数字的Java程序
我有一个程序,读取两个实数,然后打印出这两个实数之间的所有数字,可以被2、3或5整除。该程序工作正常,但当用户输入两个非常大的数字(例如112222123333和2141233244344)时,程序需要很长时间来计算结果。我想以某种方式修复这个程序,这样即使对于大的数字,结果也能立即打印出来 以下是我目前的代码:打印出可被其他数字整除的数字的Java程序,java,numbers,Java,Numbers,我有一个程序,读取两个实数,然后打印出这两个实数之间的所有数字,可以被2、3或5整除。该程序工作正常,但当用户输入两个非常大的数字(例如112222123333和2141233244344)时,程序需要很长时间来计算结果。我想以某种方式修复这个程序,这样即使对于大的数字,结果也能立即打印出来 以下是我目前的代码: import java.util.Scanner; public class Numbers { public static void main(String[] args)
import java.util.Scanner;
public class Numbers
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
long x = sc.nextLong(); // first number input
long y = sc.nextLong(); // second number input
long num = 0; // new variable num -- means all the numbers between these to given input numbers
long count = 0; // loop counter - how many numbers are divided by 2 or 3 or 5
for (num = x; x <= num && num <= y; num++) {
if (num % 2 == 0 | num % 3 == 0 | num % 5 == 0) {
count = count + 1; // increasing the counter by 1, so that every time the loop repeats, the counter increases...
}
}
System.out.println(count); // prints out how many numbers are divided by 2 or 3 or 5 ...
}
}
import java.util.Scanner;
公共课号
{
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
long x=sc.nextLong();//第一个数字输入
长y=sc.nextLong();//第二个数字输入
long num=0;//新变量num——表示这些数字与给定输入数字之间的所有数字
long count=0;//循环计数器-有多少个数字被2、3或5除
对于(num=x;x嗯,您根本不需要循环
你知道x和y之间可以被2整除的数是(y-x)/2(正负一)
类似地,x和y之间可被3整除的数字的数量为(y-x)/3(正减1)
x和y之间可被5整除的数是(y-x)/5(正-负一)
你只需要删除你数了不止一次的数字
如果你考虑组A、B和C,分别将2, 3和5的数字组(在所需的范围内)分开,你的目标是找到:
|A并集B并集C |=| A |+| B |+| C |-| A与B的交点-| A与C的交点-| B与C的交点-| A与B的交点与C的交点|
因此,你必须减去可被2*3整除的数字,可被2*5整除的数字和可被3*5整除的数字。最后,你必须将可被2*3*5整除的数字相加
例如:
在1000和2000之间,大约有(2000-1000)/2=500个数字可被2整除:100010021004,…,2000。实际上,计数被1关闭,因为它是501而不是500,但您可以通过添加一些检查范围边缘的逻辑来调整
类似地,大约有(2000-1000)/3=333个数字可以被3整除:100210051008,…,1998
大约(2000-1000)/5=200个可被5整除的数字:100010051010,…,2000。这里的计数再次被1整除。这不是一个真正的答案,但由于我的低声誉分数,我不允许发表评论
如果一个数字可被2整除,或被3整除,或被30加减,则5不变(=2*3*5)从这个数字开始。你可以从1到30计算匹配的数字,然后计算30个数字中有多少块在你的范围内,然后计算那些块中没有包括的匹配数字。没关系,我自己做了这项研究,花了很多钱,我自己也学到了一些新东西