R = 1
for i from l - 1 down to 0 do
R = R^2 (mod p)
if a_i = 1 then
R = R * g (mod p)
end if
end for
return R
R = 1, T = g
for i from 0 to l - 2 do
if a_i = 1 then
R = R * T (mod p)
end if
T = T^2 (mod p)
end for
R = R * T (mod p)
return R
a와 b가 양의 정수이고 a > b일 때, 이다.
r = a, r' = b
while r' != 0 do
r'' = r mod r'
r = r'
r' = r''
end while
d = r
return d
이 양의 정수이고 일 때, 이 성립하며 는 일 때 존재한다.(은 가 을 나눈다는 의미이다.)
r = a, r' = b, x = 1, y = 0, x' = 0, y' = 1
while r' != 0 do
q = r // r'
r'' = r mod r'
(r, x, y, r', x', y') = (r', x', y', r'', x - q * x', y - q * y')
end while
d = r
return d, x, y
오일러 파이 함수 은 에서 m과 서로소인 수의 개수를 의미한다.
for i from 1 to λ do
randomly select a from {2, 3, ..., p - 2}
if a^{p-1} ≡ 1 (mod p)이 아니라면
return "p은 합성수이다"
end if
end for
return "p은 소수이다"
카마이클 수 C는 합성수이며 모든 a에 대해 일 때 다음을 만족하는 수이다.
for i from 1 to λ do
randomly select a from {2, 3, ..., p - 2}
z = a^s (mod p)
if z ≠ 1 and z ≠ p - 1이라면
for j from 1 to r - 1 do
z = z^2 (mod p)
if z = 1이라면
return "p은 합성수이다"
end if
if z = p - 1이라면
break
end if
end for
if z ≠ p - 1이라면
return "p은 합성수이다"
end if
end if
end for
return "p은 소수이다"