【发布时间】:2012-09-23 14:50:10
【问题描述】:
通常我会进行素因数分解并获得所有素因数,然后我会进行排列和组合以找到所有因数。
例如:1824 是我要考虑的数字。现在我需要 300 中的 1824 的无因数。
有什么诀窍吗??
【问题讨论】:
-
以您的示例为例:您希望找到因子的范围是多少:1 到 300?
标签: factorization
通常我会进行素因数分解并获得所有素因数,然后我会进行排列和组合以找到所有因数。
例如:1824 是我要考虑的数字。现在我需要 300 中的 1824 的无因数。
有什么诀窍吗??
【问题讨论】:
标签: factorization
作为蛮力解决方案,您不需要为此对数字进行素数分解。您可以简单地检查范围内的所有数字。
让您希望找到因子的数字范围为 [range_start, range_end]。
只需在循环中迭代这些数字,并为每个数字(例如 x)检查是否 (number % x == 0),如果是,则 x 是数字的一个因素。
【讨论】:
一个技巧是不要搜索超过您要搜索因子的数字的平方根的数字。例如,要从 2-300 中查找因子,您只需要从 2-ceil(sqrt(1824)) 中搜索,即 2-43。找到 2-43 范围内的数字后,将其除以 1824 以检查可能高于 43 的其他因素。
【讨论】: