How to resolve the algorithm Modular inverse step by step in the 8th programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Modular inverse step by step in the 8th programming language
Table of Contents
Problem Statement
From Wikipedia: In modular arithmetic, the modular multiplicative inverse of an integer a modulo m is an integer x such that Or in other words, such that: It can be shown that such an inverse exists if and only if a and m are coprime, but we will ignore this for this task.
Either by implementing the algorithm, by using a dedicated library or by using a built-in function in your language, compute the modular inverse of 42 modulo 2017.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Modular inverse step by step in the 8th programming language
Source code in the 8th programming language
\ return "extended gcd" of a and b; The result satisfies the equation:
\ a*x + b*y = gcd(a,b)
: n:xgcd \ a b -- gcd x y
dup 0 n:= if
1 swap \ -- a 1 0
else
tuck n:/mod
-rot recurse
tuck 4 roll
n:* n:neg n:+
then ;
\ Return modular inverse of n modulo mod, or null if it doesn't exist (n and mod
\ not coprime):
: n:invmod \ n mod -- invmod
dup >r
n:xgcd rot 1 n:= not if
2drop null
else
drop dup 0 n:< if r@ n:+ then
then
rdrop ;
42 2017 n:invmod . cr bye
You may also check:How to resolve the algorithm MAC vendor lookup step by step in the Go programming language
You may also check:How to resolve the algorithm Sum of a series step by step in the Icon and Unicon programming language
You may also check:How to resolve the algorithm Sorting Algorithms/Circle Sort step by step in the ZX Spectrum Basic programming language
You may also check:How to resolve the algorithm Modular inverse step by step in the Craft Basic programming language
You may also check:How to resolve the algorithm Maximum triangle path sum step by step in the VBScript programming language