问题标签 [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.
c++ - 如何计算n个整数的lcm的所有质因数?
我有 n 个整数存储在数组 a 中,比如 a[0],a[1],.....,a[n-1] 其中每个a[i] <= 10^12
和n <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 秒:
如果有人能够以更好的方式或更快的方法做到这一点,请告诉我。
java - 一个 Java 库,它具有用于查找一组整数的最小公倍数的实用程序
我想找到一组整数的最小公倍数。是否存在这样的数字 Java 库?请提供它的链接。
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
java - 计算一系列数字的 LCM 的最有效算法是什么?
我环顾四周,发现了其他有答案的问题,但没有一个问题涉及这个特定问题的范围。包括这个问题,还有这个。
我必须以有效的方式计算大范围数字的 LCM。我没有对其他问题进行深入研究,因为它们不处理与该算法必须处理的数字一样大的数字范围。
我现在得到的代码可以在大约 90 秒内计算出 1 到 350000 之间每个数字的 LCM。(得到的数字大约有 76000 个十进制数字)。我希望最终能够将它扩展到数百万甚至数十亿元素长的范围内。
它最终可能会被并行化。对于某些算法,这根本不难,而对于其他算法则比较棘手(例如,如果该算法使用当前生成的 LCM 来计算其计算的其他部分的素数)
这里是:
请注意,与典型的 for 循环不同,此函数在 [lower, upper] 而不是 [lower, upper) 上运行。这种行为是故意的。
一些支持性的数学是,某些数字集的 LCM 是一组素因数的乘积,从中可以产生任何一个数字,而无需池外的任何数字。如果我的范围是 [1,20],我可以用以下方式表示:
有没有更有效的方法来计算如此大范围的 LCM?
我不在乎有人建议的算法是否非常占用内存,在这种情况下,时间性能比内存性能更重要(也更昂贵)。
这不是一个家庭作业问题。
问题
计算大量数字的 LCM 的最有效方法是什么?该算法需要在非常广泛的数字范围内运行,因此必须仔细优化。
附录 1
一个密切相关的问题是:计算一个 BigInteger(以另一个 BigInteger 为基础)的对数的最有效方法是什么?结果值可以截断为最接近的整数。
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)如下:
让可能的不友好数字输入[i] where 0<=i
对于每个 input[i] 找到 gcd(input[i],k)。
将范围 (0,n) 中所有 i 的 gcd(input[i],k) 的所有因子存储在一个集合中。让我们将此集合称为可能因子。
对于 k 的每个因子,检查它是否除掉了可能因子中的任何元素。如果否,则增加答案计数
我修改了算法,假设如下:
不是将 gcd(input[i],k) 的所有因子存储在一个集合中,而是找出范围 (0,n) 中所有 i 的 gcd(input[i],k) 的 lcm。这可以通过以下 LOC 轻松完成
现在对于 k 的所有因素,检查它们是否划分 lcm。如果没有,则增加计数。
然而,这个假设给了我 WA。是因为我的逻辑有任何缺陷吗?如果是,请指出(如果可能,用数学证明)这两种方法有何不同?
这是我的代码,第二种方法供参考(以及可能的错误)
list - 我如何将一大堆浮点数放入一个列表中,然后找到所有数字的最小公倍数?
我如何将一大堆浮点数放入一个列表中,然后找到所有数字的最小公倍数?
我的问题是我有一个包含太阳系信息的文本文件,我已经隔离了每个行星及其卫星的旋转周期值,我想找到所有周期的 LCM。问题是句点都是浮点数而不是整数,我无法列出它们。此外,我在开发 LCM 方程式时遇到了麻烦。任何帮助将不胜感激
约旦
c# - 最小公倍数
我有当前的编码,它曾经是一个 goto,但我被告知不要再使用 goto,因为它不受欢迎。我在将其更改为 for 循环时遇到了麻烦。我对 C# 和一般编程相当陌生,所以其中一些对我来说是全新的东西。任何帮助,将不胜感激。实际问题是输入两个数字并找到最小的公倍数。
这是 goto 的原文:
java - Project Euler #5(可被 1 到 20 的所有数字整除的最小正数):优化方法?~爪哇
问题 5: 2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。能被 1 到 20 的所有数整除的最小正数是多少?
我已经解决了Project Euler的问题 5
这是Java代码:
如何优化这个?
android - 查找超过 2 个数字的 LCM 的工作示例
安卓 2.3.3
我编写了一个用于计算 2 个以上数字的 LCM 的程序,它对我有用。我想分享它,以便它可能对正在寻找它的人派上用场。这可能不是最好的解决方案,但是,我按照我的要求做了。您可以根据需要对其进行修改。
我已经对输入进行了硬编码,而且我的程序也使用 ArrayLists 来执行操作。你可能想改变这些。
先决条件 ::: 1. 计算输入范围的素数。
对于以下输入 :::
对于以下输入 :::
我对 Android 和 Java 也很陌生。所以,如果这不是一个好的解决方案,请不要介意。
希望能帮助到你...