计算 Euler Phi N 的最简单方法是啥?

Posted

技术标签:

【中文标题】计算 Euler Phi N 的最简单方法是啥?【英文标题】:What is the easiest way to calculate Eulers Phi N?计算 Euler Phi N 的最简单方法是什么? 【发布时间】:2016-05-29 18:37:47 【问题描述】:

我有一个数字,我需要将它分成 2 个因数,以便我可以将它们放入欧拉 phi 函数并计算我的 n 以进行 RSA 加密,我如何找到这两个整数? 例如数字:1387: 19 • 73 所以我得到 phi(1387)=(19-1)*(73-1)= 1296 = n

如何以最快的方式获得 19 和 73?我不想使用任何互联网计算器,因为我无法在考试中使用它们。

【问题讨论】:

考虑数字。您想要将其分解以计算欧拉的 phi 函数的事实并不是很相关。有许多因式分解算法,从简单的试验除法到复杂的数域方法。由于您似乎在谈论可以通过袖珍计算器计算的小数,因此只需使用连续赔率的试除法(假设 n 是奇数,因为它几乎总是使用 RSA)。 所以从一开始就用所有可能的小素数除数?如果号码是 87654352 怎么办?也是一个巨大的数字。 87654352 并不是一个庞大的数字。你仍然可以用一种天真的方法非常快地考虑它。一种常见的算法是数字域筛及其所有变体,它适用于更大的数字。还有很多其他的算法可以用来寻找素因数。 我投票结束这个问题,因为这与编程没有直接关系。 好吧,这只是一个例子,你谈论这些算法,但告诉我一个可以做到的。我可以在考试中使用的好且简单的。有时通过幼稚的方法命中数 790~ 我没有时间在考试中这样做 【参考方案1】:

在 RSA 中,n=pq,在您的示例中,p=19,q=73。因为 p 和 q 都是质数,所以在您的考试中我认为您可以猜测它们的值。我认为因为 RSA 的节省依赖值 n 不能轻易分成两个质数,所以你的老师不会给出太大的值 n。例如,现在老师给我一个值n=1387,你可以认为现在最后一个数字是7,那么两个数字的值可能是?3*?9或?1*?7。如果是?3*?9,那么?3可能等于 3,13,23,43,53,73,83...?9 可能等于 19,29,59,79,89...,现在可以用 1387 除?3,搜索是否有?9 匹配(看 1387 除以 ?3 的结果是否是素数)。是 只是我的想法,祝你好运。

【讨论】:

以上是关于计算 Euler Phi N 的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

线性筛-euler,强大O(n)

递推求欧拉函数的最简单的详解

欧拉函数及代码实现

欧拉函数phi值的计算模板

(hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

创建 STL - 身份映射的最简单方法是啥?