问题标签 [lcm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1259 浏览

arrays - 计算 N 个整数数组中 M 个连续数的 LCM

我在这里遇到了这个问题。这是今年早些时候举办的一场编程比赛。
这是摘要:
给定一个包含 N 个整数的数组,找到所有连续 M 个整数的 LCM。
例如

输出 :

实际上这里有一个解决方案草图但我无法理解动态编程部分。
因此,如果有人可以通过一些示例详细说明相同的解决方案,那就太好了。
一个新的、易于理解的解决方案也将受到赞赏。

0 投票
4 回答
2662 浏览

c++ - 如何计算n个整数的lcm的所有质因数?

我有 n 个整数存储在数组 a 中,比如 a[0],a[1],.....,a[n-1] 其中每个a[i] <= 10^12n <100. 现在,我需要找到这 n 个整数的 LCM 的所有质因数,即 {a[0],a[1],.....,a[n-1]} 的 LCM

我有一种方法,但我需要一种更有效的方法。

我的方法:

有没有更好的方法来解决这个问题?

我正在发布问题的链接:

http://www.spoj.pl/problems/MAIN12B/

链接到我的代码: http: //pastebin.com/R8TMYxNz

解决方案:

正如 Daniel Fischer 所建议的,我的代码需要一些优化,比如更快的筛子和一些小的修改。完成所有这些修改后,我能够解决问题。这是我在 SPOJ 上接受的代码,耗时 1.05 秒:

如果有人能够以更好的方式或更快的方法做到这一点,请告诉我。

0 投票
1 回答
1364 浏览

java - 一个 Java 库,它具有用于查找一组整数的最小公倍数的实用程序

我想找到一组整数的最小公倍数。是否存在这样的数字 Java 库?请提供它的链接。

0 投票
2 回答
2246 浏览

c++ - 计算 1 到 20 之间数字的 lcm 的 C++ 程序(项目 euler )

正如标题所解释的,这是一个查找 1 到 20 之间数字 lcm 的程序。我找到了一个算法来做到这一点,这是链接
http://www.cut-the-knot.org/Curriculum/Arithmetic/LCM.shtml 网页上有一个 java 小程序可以更好地解释算法

问题:我编写的代码编译器没有显示错误,但是当我运行代码时程序会发疯,我想可能是一些无限循环,但我一生都无法弄清楚。我使用 turbo c++ 4.5,所以基本上如果有人可以查看代码并帮助我,那就太好了。提前致谢

算法

假设我们需要找到 2,6,8 的 lcm

首先,我们找到系列中最小的,并将其上方的数字添加到它上面,即系列变为

4,6,8

现在我们再次找到最小值并将列中的初始值添加到它,即 2

6,6,8

所以下一次迭代变成

8,6,8

8,12,8

10,12,8

10,12,16

12,12,16

14,12,16

14,18,16

16,18,16

18,18,16

18,18,24

20,18,24

20,24,24

22,24,24

24,24,24

正如你所看到的那样,所有数字都变得相等,这就是我们的 lcm

0 投票
2 回答
4105 浏览

java - 计算一系列数字的 LCM 的最有效算法是什么?

我环顾四周,发现了其他有答案的问题,但没有一个问题涉及这个特定问题的范围。包括这个问题,还有这个

我必须以有效的方式计算大范围数字的 LCM。我没有对其他问题进行深入研究,因为它们不处理与该算法必须处理的数字一样大的数字范围。

我现在得到的代码可以在大约 90 秒内计算出 1 到 350000 之间每个数字的 LCM。(得到的数字大约有 76000 个十进制数字)。我希望最终能够将它扩展到数百万甚至数十亿元素长的范围内。

它最终可能会被并行化。对于某些算法,这根本不难,而对于其他算法则比较棘手(例如,如果该算法使用当前生成的 LCM 来计算其计算的其他部分的素数)

这里是:

请注意,与典型的 for 循环不同,此函数在 [lower, upper] 而不是 [lower, upper) 上运行。这种行为是故意的。

一些支持性的数学是,某些数字集的 LCM 是一组素因数的乘积,从中可以产生任何一个数字,而无需池外的任何数字。如果我的范围是 [1,20],我可以用以下方式表示:

有没有更有效的方法来计算如此大范围的 LCM?

我不在乎有人建议的算法是否非常占用内存,在这种情况下,时间性能比内存性能更重要(也更昂贵)。

这不是一个家庭作业问题。

问题

计算大量数字的 LCM 的最有效方法是什么?该算法需要在非常广泛的数字范围内运行,因此必须仔细优化。

附录 1

一个密切相关的问题是:计算一个 BigInteger(以另一个 BigInteger 为基础)的对数的最有效方法是什么?结果值可以截断为最接近的整数。

0 投票
1 回答
392 浏览

algorithm - 面试街头挑战中的错误答案

首先是一个小的澄清。我确实在这个问题上得到了 AC,但我更好的方法(这在数学上是等效的,我假设我的 AC 解决方案)是得到一个 WA 判决在 interviewstreet 中存在一个问题,如下所示:

有1个友好号码和N个不友好号码。我们想找出有多少数字正好整除友好数字,但不整除任何不友好数字。

输入格式:

输入的第一行包含两个由空格分隔的数字 N 和 K。N是不友好号码的数量,K是友好号码。输入的第二行包含 N 个空格分隔的不友好数字。

输出格式:

在一行中输出答案。

样本输入:

8 16
2 5 7 4 3 8 3 18

样本输出:

1

解释:

给定友好数字 16 的除数是 { 1, 2, 4, 8, 16 },不友好数字是 { 2, 5, 7, 4, 3, 8, 3, 18 }。现在1整除所有不友好的数字,2整除2,4整除4,8整除8,但16不整除任何一个。因此,只有一个数字可以整除友好数字,但不整除任何不友好数字。所以答案是1。

我的算法(得到了 AC)如下:

  1. 让可能的不友好数字输入[i] where 0<=i

  2. 对于每个 input[i] 找到 gcd(input[i],k)。

  3. 将范围 (0,n) 中所有 i 的 gcd(input[i],k) 的所有因子存储在一个集合中。让我们将此集合称为可能因子。

  4. 对于 k 的每个因子,检查它是否除掉了可能因子中的任何元素。如果否,则增加答案计数

我修改了算法,假设如下:

不是将 gcd(input[i],k) 的所有因子存储在一个集合中,而是找出范围 (0,n) 中所有 i 的 gcd(input[i],k) 的 lcm。这可以通过以下 LOC 轻松完成

现在对于 k 的所有因素,检查它们是否划分 lcm。如果没有,则增加计数。

然而,这个假设给了我 WA。是因为我的逻辑有任何缺陷吗?如果是,请指出(如果可能,用数学证明)这两种方法有何不同?

这是我的代码,第二种方法供参考(以及可能的错误)

0 投票
1 回答
189 浏览

list - 我如何将一大堆浮点数放入一个列表中,然后找到所有数字的最小公倍数?

我如何将一大堆浮点数放入一个列表中,然后找到所有数字的最小公倍数?

我的问题是我有一个包含太阳系信息的文本文件,我已经隔离了每个行星及其卫星的旋转周期值,我想找到所有周期的 LCM。问题是句点都是浮点数而不是整数,我无法列出它们。此外,我在开发 LCM 方程式时遇到了麻烦。任何帮助将不胜感激

约旦

0 投票
7 回答
27683 浏览

c# - 最小公倍数

我有当前的编码,它曾经是一个 goto,但我被告知不要再使用 goto,因为它不受欢迎。我在将其更改为 for 循环时遇到了麻烦。我对 C# 和一般编程相当陌生,所以其中一些对我来说是全新的东西。任何帮助,将不胜感激。实际问题是输入两个数字并找到最小的公倍数。

这是 goto 的原文:

0 投票
10 回答
20710 浏览

java - Project Euler #5(可被 1 到 20 的所有数字整除的最小正数):优化方法?~爪哇

问题 5: 2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。能被 1 到 20 的所有数整除的最小正数是多少?

我已经解决了Project Euler的问题 5

这是Java代码:

如何优化这个?

0 投票
2 回答
858 浏览

android - 查找超过 2 个数字的 LCM 的工作示例

安卓 2.3.3

我编写了一个用于计算 2 个以上数字的 LCM 的程序,它对我有用。我想分享它,以便它可能对正在寻找它的人派上用场。这可能不是最好的解决方案,但是,我按照我的要求做了。您可以根据需要对其进行修改。

我已经对输入进行了硬编码,而且我的程序也使用 ArrayLists 来执行操作。你可能想改变这些。

先决条件 ::: 1. 计算输入范围的素数。

程序的输出

对于以下输入 :::

具有不同输入的输出

对于以下输入 :::

输出 6 个值

我对 Android 和 Java 也很陌生。所以,如果这不是一个好的解决方案,请不要介意。

希望能帮助到你...