计算数字中最大素因子的最佳方法是什么?
我认为效率最高的是以下内容:
我基于这个假设,因为它更容易计算小的素因子.这是对的吗?我应该研究哪些其他方法?
编辑:我现在已经意识到,如果有超过2个素因子,我的方法是徒劳的,因为当结果是两个其他素数的乘积时,步骤2失败,因此需要递归算法.
再次编辑:现在我已经意识到这仍然有效,因为最后找到的素数必须是最高的,因此对步骤2的非素数结果的任何进一步测试都会导致较小的素数.
我不打算将其用于安全目的或统计分析.我需要创建一个简单的随机数生成器,用于我的计算机图形应用程序.我不想使用术语"随机数发生器",因为人们用非常严格的术语来思考它,但我想不出任何其他的词来形容它.
最重要的是,我需要能够在恒定时间内计算系列中的第n个项.
看来,我无法用rand_r或srand()实现这一点,因为这些需求是依赖于状态的,我可能需要以某种未知的顺序计算nth.
我看过线性反馈移位寄存器,但这些寄存器也依赖于状态.
到目前为止我有这个:
int rand =(n*prime 1 + seed)%prime 2
n =用于表示序列中术语的索引.例如:对于第一学期,n == 1
素数1和素数2是素数,其中素数1 >素数2
seed =某个数字,它允许一个人使用相同的函数根据种子产生不同的系列,但是给定种子的系列相同.
我不知道这是多么好或坏,因为我还没有充分利用它,但如果有更多经验的人可以指出这方面的问题,或者帮助我改进它,那将会很棒.
编辑 - 我不在乎它是否可预测.我只是想在我的计算机图形学中创建一些随机性.