我想找到小于10 ^ 12的大数的质分解。我得到了以下代码(在Java中):
public static List<Long> primeFactors(long numbers) {
long n = numbers;
List<Long> factors = new ArrayList<Long>();
for (long i = 2; i <= n / i; i++) {
while (n % i == 0) {
factors.add(i);
n /= i;
}
}
if (n > 1) {
factors.add(n);
}
return factors;
}
首先,上述算法的复杂性是什么?我很难找到它。
而且对于大量的素数来说太慢了。
有没有更好的算法,否则如何优化这种算法?
如果您想分解 许多
大数,那么最好先找到质数最大sqrt(n)
(例如使用Eratosthenes的Sieve)。然后,您只需要检查那些质数是否是因数,而不是全部测试i <= sqrt(n)
。
对于物理缩放任何UIImage的方法,我需要创建位图上下文,除了目标宽度和高度之外,它与图像具有完全相同的设置。 这是我目前的代码。缺少什么:如何为CGBitmapContextCreate的bytesPerRow参数确定CGImage每像素的组件数? CGContextRef ctx=CGBitmapContextCreat(NULL,德宽,德高,bitsPerComponent, bytesP
问题内容: 我有很多对象,我需要将它们分成两个组成一组,以供UI助手使用。 例: 通过这四个数组成为一个数组 有很多分割数组的方法。但是,如果阵列很大,什么是最有效的(成本最低)。 问题答案: 如果您正在寻找效率,则可以使用一种方法来懒散地生成每个包含2个元素的数组,因此您一次只能在内存中存储2个元素: 此方法适用于任何Array,而不仅限于Arrays。 对于Swift 1,没有协议扩展,您将拥
根据给定的函数对数组的元素进行分组,并返回每个分组中元素的数量。 使用 Array.map() 将数组的值映射到函数或属性名称。 使用 Array.reduce() 创建一个对象,其中的键是从映射的结果中产生的。 const countBy = (arr, fn) => arr.map(typeof fn === 'function' ? fn : val => val[fn]).reduce
在Apache Spark中, -允许将RDD精确划分为分区。 而是如何将给定的RDD划分成分区,使得所有分区(最后一个分区除外)都具有指定数量的元素。鉴于RDD元素的数量是未知的,做<代码>。count()的开销很大。 预期:
我假设eclipse中存在一些限制,阻止将大量数字打印到控制台。 编辑:在5572处,控制台的输出将被清除,这是输出: 你想看多少个素数?5572
问题内容: 我正在尝试实现一个函数,该函数将正整数作为输入并返回包含的素数分解中所有数字的列表。 我已经走了这么远,但我认为最好在这里使用递归,不确定如何在这里创建递归代码,基本情况是什么?首先。 我的代码: 问题答案: 一个简单的审判部门: 具有复杂性(最坏的情况)。您可以通过特殊情况2并仅在奇数上循环(或特殊情况下将更多小质数并在可能的除数上循环)来轻松改进它。