当前位置: 首页 > 面试题库 >

Java程序输出可被其他数字整除的数字

盖马鲁
2023-03-14
问题内容

我有一个程序,该程序读取两个实数,然后打印出这两个之间的所有数字,这些数字可以被2或3或5整除。该程序可以正常工作,但是当用户输入两个非常大的数字时(例如1122222123333)和214123324434434),程序需要很长时间才能计算出结果。我想以某种方式修复该程序,以便即使对于大量结果也将立即打印出来。

到目前为止,这是我的代码

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 ...       
    }
}

问题答案:

好吧,您根本不需要循环。

  1. 您知道x和y之间可被2整除的数字的数目为(yx)/ 2(加减一)。

  2. 类似地,x和y之间可被3整除的数字数为(yx)/ 3(加减一)。

  3. x和y之间可被5整除的数字数为(yx)/ 5(加减一)。

您只需要删除多次计数的数字即可。

如果您考虑A,B和C组,即分别被2、3和5整除的数字组(在所需范围内),则您的目标是:

| A工会B工会C | = | A | + | B | + | C | -|与B的交点| -|与C的交点| -| B与C |的交点 + |
A与B的交集与C |的交集

因此,您必须减去可被2 * 3整除的数字,可被2 * 5整除的数字和可被3 * 5整除的数字。最后,您必须添加可被2 * 3 * 5整除的数字。

范例:

在1000到2000之间,大约有(2000-1000)/ 2 =
500个可被2整除的数字:1000,1002,1004,…,2000。实际上,计数是1,因为它是501,而不是500,但是您可以通过添加一些检查范围边缘的逻辑来对此进行调整。

同样,大约有(2000-1000)/ 3 = 333个数字可被3整除:1002、1005、1008,…,1998。

大约(2000-1000)/ 5 = 200个可以被5整除的数字:1000,1005,1010,…,2000。在这里,计数再次减一。



 类似资料:
  • 本文向大家介绍C#程序查找数字是否可被2整除,包括了C#程序查找数字是否可被2整除的使用技巧和注意事项,需要的朋友参考一下 如果数字除以2的余数为0,则将被2整除。 假设我们的数字是5,我们将使用以下if-else命令进行检查- 示例 以下是查找数字是否可以被2整除的示例。 输出结果

  • 格式如下所示: 输入:第一行包含一个整数T,表示测试用例的数量。第二行包含三个整数a、b和N 输出:对于每个测试用例,在新行中打印第N个数字。 样本输入 1 2 3 10

  • 我有个愚蠢的问题。我想划分一个java.lang.Integer数组,并将结果保存到一个java.lang.Double数组中。我在Internet上搜索,但没有找到有用的信息(大部分关于Java.lang.Integer类的搜索都导致了原始类型int操作,如Java的整数除法和Java的整数除法)。 我下面的代码不起作用 对于java.lang.Integer(或者更一般的Number类和其他基

  • 本文向大家介绍PHP程序查找可被数字'x'或数字'y'整除的前n个自然数之和,包括了PHP程序查找可被数字'x'或数字'y'整除的前n个自然数之和的使用技巧和注意事项,需要的朋友参考一下 为了找到可以被数字'x'或数字'y'整除的前n个自然数的总和,代码如下- 示例 输出结果 定义了一个名为“ sum_of_nums”的函数,该函数通过检查三个值是否可以除以两个特定值来计算三个值。在函数外部,定义

  • 我在写一个程序,你输入两个除数,你要检查的数字列表可以被你输入的两个数字整除。 下面是一个输出的示例: 我的问题是它不会检查哪个数可以被两个除数整除,而是打印出来 这是我的代码:

  • 我被分配了一个任务,让我创建3个方法来创建一个数组,打印一个数组,并计算一个数组中所有可被10整除的数字。给我最大麻烦的部分是数可被10整除的数字。这是我到目前为止的代码: