How to resolve the algorithm Modular inverse step by step in the Raku programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Modular inverse step by step in the Raku 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 Raku programming language

Source code in the raku programming language

sub inverse($n, :$modulo) {
    my ($c, $d, $uc, $vc, $ud, $vd) = ($n % $modulo, $modulo, 1, 0, 0, 1);
    my $q;
    while $c != 0 {
        ($q, $c, $d) = ($d div $c, $d % $c, $c);
        ($uc, $vc, $ud, $vd) = ($ud - $q*$uc, $vd - $q*$vc, $uc, $vc);
    }
    return $ud % $modulo;
}

say inverse 42, :modulo(2017)


  

You may also check:How to resolve the algorithm Permutations/Rank of a permutation step by step in the PARI/GP programming language
You may also check:How to resolve the algorithm Comma quibbling step by step in the Lua programming language
You may also check:How to resolve the algorithm Run-length encoding step by step in the Bracmat programming language
You may also check:How to resolve the algorithm Rep-string step by step in the Kotlin programming language
You may also check:How to resolve the algorithm Execute Brain step by step in the Groovy programming language