当前位置: 首页 > 知识库问答 >
问题:

多路复用程序

商同
2023-03-14

这是我试图解决的编程问题:2520是最小的数字,可以被1到10的每个数字除,没有任何余数。

可以被1到20的所有数字整除的最小正数是多少?

这是到目前为止我的解决方案,但是每次答案都是零,所以我认为我的代码中有一个错误。任何帮助都将不胜感激。

public static boolean isDiv(int num){
    boolean isDiv = false;

    for (int i = 1; i <= 20; i++){
        if (i == 20){

            isDiv = true;

        }
        if ((num % i) == 0){
            continue;

        }
        else  {
            break;
        }

    }


return isDiv;}

public static int smallMulti(int num){
    boolean div = isDiv(num);
    int answer = 0;

    for (int i = num; num < 2520; i--){

        if (div = true){
            answer = i;
        }
    }

return answer;}

共有2个答案

况景龙
2023-03-14

我使用lcm(最小公倍数)实现

public static int lcm(int a, int b) {
    return (a*b)/gcd(a, b);
}

public static int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

public static int smallMulti(int n) {
    int number = 1;

    for (int i = 2; i <= n; i++) {
        number = lcm(number, i);
    }

    return number;
}
米元凯
2023-03-14

你把整个问题复杂化了,再加上多个逻辑错误。基本上你只需要2个循环。这里有一个代码检查,用于检查每个数可设计的第一个数,直到整数。最大值。如果你想走得更高,你可以采用代码来处理长代码。

public static int smallMulti(int num) {
    for (int i = 1; num <= Integer.MAX_VALUE; ++i) { // Check every int in the scope of the Integer
        for (int j = 2;j<=num;++j) {
            if(i % j != 0) {
                break; // If i % j is unequal to 0 then this number isn´t valid.
            }
            if(j == num) {
                return i; // If we reached j == num then everything was divisble yet so we can return i as the correct value;
            }
        }
    }
    return -1;
}

以下是该主电路的输出示例

public static void main(String[] args) {
    for(int i = 2; i <= 20; ++i)
        System.out.println("Smallest Value divisible by 1-"+ i + " = " + smallMulti(i));
}

输出

Smallest Value divisible by 1-2 = 2
Smallest Value divisible by 1-3 = 6
Smallest Value divisible by 1-4 = 12
Smallest Value divisible by 1-5 = 60
Smallest Value divisible by 1-6 = 60
Smallest Value divisible by 1-7 = 420
Smallest Value divisible by 1-8 = 840
Smallest Value divisible by 1-9 = 2520
Smallest Value divisible by 1-10 = 2520
Smallest Value divisible by 1-11 = 27720
Smallest Value divisible by 1-12 = 27720
Smallest Value divisible by 1-13 = 360360
Smallest Value divisible by 1-14 = 360360
Smallest Value divisible by 1-15 = 360360
Smallest Value divisible by 1-16 = 720720
Smallest Value divisible by 1-17 = 12252240
Smallest Value divisible by 1-18 = 12252240
Smallest Value divisible by 1-19 = 232792560
Smallest Value divisible by 1-20 = 232792560
 类似资料:
  • 默认的,当连接道不同的命名空间后一个单一的链接将会被使用。 const socket = io(); const adminSocket = io('/admin'); // a single connection will be established 注意:重用相同的命名空间将会创建两个连接: const socket = io(); const socket2 = io(); // wil

  • 主要内容:同步/异步/阻塞/非阻塞,BIO,NIO,IO multiplexing,select,poll,epollRedis利用epoll实现io多路复用,将连接信息和事件放入队列,一次放到文件事件派发器,事件派发器将事件分发给事件处理器。 io多路复用机制:监视多个描述符fd,一旦某个描述符就绪,可以通知程序进行响应的读写操作。这种机制需要select,poll,epoll。多个连接公用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,不需要全部的阻塞连接。当某条连接有新的数据可以处理的时

  • 问题内容: 注意-Go中的新手。 我编写了一个多路复用器,该多路复用器 应将 一组通道的输出合并为一个。对建设性的批评感到满意。 我正在测试: 但是我的输出很奇怪: 所以对我的问题: Mux中我在做错什么吗? 为什么我只能从输出通道中获取最后10个? 为什么喂食看起来如此奇怪?(每个输入通道的第一个,最后一个通道的所有,然后什么都没有) 有更好的方法吗? 我需要所有输入通道具有与输出通道相同的权限

  • 在一个HTTP/2的连接中, 流是服务器与客户端之间用于帧交换的一个独立双向序列. 流有几个重要的特点: 一个HTTP/2连接可以包含多个并发的流, 各个端点从多个流中交换frame 流可以被客户端或服务器单方面建立, 使用或共享 流也可以被任意一方关闭 frames在一个流上的发送顺序很重要. 接收方将按照他们的接收顺序处理这些frame. 特别是HEADERS和DATA frame的顺序, 在

  • 8.7. 基于select的多路复用 下面的程序会进行火箭发射的倒计时。time.Tick函数返回一个channel,程序会周期性地像一个节拍器一样向这个channel发送事件。每一个事件的值是一个时间戳,不过更有意思的是其传送方式。 gopl.io/ch8/countdown1 func main() { fmt.Println("Commencing countdown.")

  • 本文向大家介绍python 并发编程 多路复用IO模型详解,包括了python 并发编程 多路复用IO模型详解的使用技巧和注意事项,需要的朋友参考一下 多路复用IO(IO multiplexing) 这种IO方式为事件驱动IO(event driven IO)。 我们都知道,select/epoll的好处就在于单个进程process就可以同时处理多个网络连接的IO。它的基本原理就是select/e