问题是:
对于素数p,小于或等于它的联合素数集由{1,2,3,4,... p-1}给出。
我们定义f(x,p)0< x<当且仅当从1到p-1的所有数字都可以用模p算术写成x的幂时,p = 1。
设n是最大的12位素数。找到所有整数j小于n的乘积,使得f(j,n)= 1,以模数运算
有人能给我一个更好的解释吗?
答案 0 :(得分:2)
我会假设您无法理解问题要求您做什么。
首先,必须定义函数f。当且仅当从1到p-1的所有数字都可以写成模数运算中的x的幂时,它需要返回1“。也就是说,在伪代码中:
for i from 1 to p-1
if (for some n, (x^n)%p != i%p) return 0
end for
return 1
如果某些i
中的任何一个x^n
无法写为n
,那么我们就不会返回1.如果它们都有效,那么我们返回1。
最后,我们正在寻找所有这些j
的产品。所以,再次,在伪代码中:
let p = 1
for j from 1 to n
if (f(j,n)==1) p = p*j
end for
return p%n
如果j
f(j,n)
是1
,我们只会按照要求加倍{{1}}。那有意义吗?你不明白这个问题的特定部分吗?
答案 1 :(得分:1)
答案 2 :(得分:1)
用于定义的非常糟糕的伪代码 - 这不是正确的代码
function answerToQuestion()
answer = 1
n = getLargest12DigitPrime()
for j = 1 to n-1
if (f(j,n) == 1)
answer *= j
return answer
end function
function f(j, n)
for x=1 to n-1
if not canBeWrittenAsPowerOfJModuloN(x, j, n)
return 0
return 1
end function