如何使用 Perl 对整数进行因式分解?
我想将整数拆分为它们的因子。 例如,如果记录总数为:
169 - ( 13 x 13 times)
146 - ( 73 x 2 times)
150 - ( 50 x 3 times)
175 - ( 25 x 7 times)
168 - ( 84 x 2 )
160 - ( 80 x 2 times)
当超过 10k 时 - 我希望所有内容都为 1000 当它超过 100k 时 - 我希望一切都在 10k 上
,这样我想对数字进行因式分解。 如何实现这一目标? 有没有 Perl 模块可用于此类数字运算?
假设记录总数为 10k。 它应该只被分割1000x10次; 不是 100 或 10 秒。
我可以使用 sqrt
函数。 但这并不总是我所期待的。 如果我输入 146,我必须得到 (73, 2)。
I want split integers into their factors. For example, if the total number of records is:
169 - ( 13 x 13 times)
146 - ( 73 x 2 times)
150 - ( 50 x 3 times)
175 - ( 25 x 7 times)
168 - ( 84 x 2 )
160 - ( 80 x 2 times)
When it's more than 10k - I want everything on 1000
When it's more than 100k - I want everything on 10k
In this way I want to factor the number. How to achieve this? Is there any Perl module available for these kinds of number operations?
Suppose total number of records is 10k. It should be split by 1000x10 times only; not by 100 or 10s.
I can use sqrt
function. But it's not always what I am expecting. If I give the input 146, I have to get (73, 2).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
循环遍历可接受范围内的一些常见数字(例如 9 到 15),计算测试数字的余数,然后选择最小值。
Loop through some common numbers in an acceptable range (say, 9 to 15), compute the remainder modulo your test number, and choose the lowest.
如果数字不是质数,则可以使用因式分解算法。
这里有一个这样的函数的例子: http://www.classhelper.org/articles/perl-by-example-factoring-numbers/factoring-numbers-with-perl.shtml
If the number is not a prime you can use a factoring algorithm.
There is an example of such a function here: http://www.classhelper.org/articles/perl-by-example-factoring-numbers/factoring-numbers-with-perl.shtml
您可以在 Perl 中使用与其他语言相同的算法。 这些想法中没有任何 Perl 特殊的魔力。 这只是实现,对于像这个问题这样的问题,它可能看起来与任何语言的实现非常相似。
您想解决什么问题? 如果我们知道您想要做什么,也许我们可以为您指出正确的算法:
You can use the same algorithms you find for other languages in Perl. There isn't any Perl special magic in the ideas. It's just the implementation, and for something like this problem, it's probably going to look very similar to the implementation in any language.
What problem are you trying to solve? Maybe we can point you at the right algorithm if we know what you are trying to do: