如果p是素数,如何在((r ^ n-1)/(r-1))%p = s中找到n?

时间:2017-06-18 09:41:50

标签: math primes

我想把它减少到这个,但无法得出任何结论。 ((r ^ n-1)/(r-1))%p ==((r ^ n-1)*(invmod(r-1,p)))%p。

如果可能的话,n也应该位于[1,p)之间,并且对于我所属的每个r ^ i [1,p]是不同的并且包含来自[1,p)的所有数字

请帮忙!

1 个答案:

答案 0 :(得分:1)

我将在这个答案中假设我们正在谈论r ^(n-1)

x%p = s

表示存在任意整数m,以便

x = p * m + s

因为%是周期性的并且将数字划分为模数类。这意味着

(r ^(n - 1))/(r - 1)= p * m + s

其中m是任意整数。这意味着

r ^(n - 1)=(p * m + s)*(r - 1)

由于所有数字都是正数,我们可以将其转换为对数公式:

ln(r ^(n - 1))= ln((p * m + s)*(r - 1))

由于对数内的功率等于标量,我们可以做一些进一步的修改:

(n - 1)* ln(r)= ln((p * m + s)*(r - 1))

所以

n * ln(r)= ln((p * m + s)*(r - 1))+ ln(r)

因此

n * ln(r)= ln((p * m + s)* r *(r - 1))

最后:

n = ln((p * m + s)* r *(r - 1))/ ln(r)

如果需要,我们可以进一步细化:

n = log(r,(p * m + s)* r *(r - 1))

所以

n = log(r,r)+ log(r,(p * m + s)*(r - 1))

n = 1 + log(r,(p * m + s)*(r-1))

你需要分析问题空间,知道n,r和s在[1,p)的区间内,m是一个任意整数。因此,问题是:m的可能整数值的集合是什么,它将允许所有三个值都在所需的时间间隔内,以及可能的值是什么。这是一个较长的分析,超出了简短的答案的范围,但我认为你应该从这里开始。如果没有,那么问另一个问题,你将被困在哪里,让我知道它。