저는 몽고메리 곱셈 알고리즘을 파이썬 3.x에서 사용하려고합니다. 코드는 올바른 결과를 제공하지 않습니다,몽고메리 곱셈 알고리즘 (Python)
#!/usr/bin/python3
N = 41
A = 13
B = 17
n = N.bit_length()
R = 0
for i in range(0, n):
q = int(R + (A & (1 << i) != 0) * B) % 2
R = int((R + (A & (1 << i) != 0) * B + q * N)/2)
print("Result:", R % N)
그러나 아래에 주어진다 작성되었습니다
Input: Modulus N(n bit), gcd(n, 2) = 1, Multipler: A (n bit), Multiplicant: B (n bit)
Output: R = (A x B x 2^(-n)) mod N
R = 0
for (i = 0; i < n; i++)
{
q = (R + A(i) * B) mod 2
R = (R + A(i) * B + q * N)/2
}
print(R)
파이썬 3.x의 코드 :이 알고리즘의 의사 코드는 아래와 같습니다. 문제가 무엇입니까?
답변 해 주셔서 감사합니다.
결과는 무엇이며 예상 결과는 무엇입니까? –
해당 코드는 결과가 12입니다. –
코드는 12를 제공하지만 예상되는 숫자는 무엇입니까? –