From d3fb35519e1e758fc40a3b3d37c5fa6dc0df7f7e Mon Sep 17 00:00:00 2001 From: tolgabuyuktanir Date: Sat, 15 Jun 2019 19:47:52 +0300 Subject: [PATCH 1/4] Extended Euclidean Algorithm for Modulo Inverse --- eea.py | 22 ++++++++++++++++++ extended-euclidean-algorithm.py | 41 +++++++++++++++------------------ 2 files changed, 40 insertions(+), 23 deletions(-) create mode 100644 eea.py diff --git a/eea.py b/eea.py new file mode 100644 index 0000000..b8603b1 --- /dev/null +++ b/eea.py @@ -0,0 +1,22 @@ +import sys + +#Python program for Extended Euclidean algorithm +def egcd(a, b): + if a == 0: + return (b, 0, 1) + else: + gcd, x, y = egcd(b % a, a) + return (gcd, y - (b/a) * x, x) + +def main(): + if(len(sys.argv)!=3): + print("Usage: python3 eea.py a m") + print("\tax+by=1\n\tgdc(a,m)=1") + else: + a=int(sys.argv[1]) + m=int(sys.argv[2]) + gcd, x, y = egcd(a,m) + print("gdc:"+str(gcd)+" x:"+str(x), " y:"+str(y)) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/extended-euclidean-algorithm.py b/extended-euclidean-algorithm.py index b04de47..b8603b1 100644 --- a/extended-euclidean-algorithm.py +++ b/extended-euclidean-algorithm.py @@ -1,27 +1,22 @@ -def mmi(a,power,m): - m0 = m - x0 = 0 - x1 = 1 - if m == 0: - return 0 - while a > 1: - # quotient - q = a/m - t = m - # euclids theorem - m= a%m - a = t - # back subs - t = x0 - x0 = x1-(q*x0) - x1 = t - if x1 < 0: - x1 += m0 - return x1 - +import sys + +#Python program for Extended Euclidean algorithm +def egcd(a, b): + if a == 0: + return (b, 0, 1) + else: + gcd, x, y = egcd(b % a, a) + return (gcd, y - (b/a) * x, x) + def main(): - base, power, mod = map(int, raw_input().strip().split(' ')) - print mmi(base, power, mod) + if(len(sys.argv)!=3): + print("Usage: python3 eea.py a m") + print("\tax+by=1\n\tgdc(a,m)=1") + else: + a=int(sys.argv[1]) + m=int(sys.argv[2]) + gcd, x, y = egcd(a,m) + print("gdc:"+str(gcd)+" x:"+str(x), " y:"+str(y)) if __name__ == "__main__": main() \ No newline at end of file From ac025a908f15f16d06e80818e9592f89bd248256 Mon Sep 17 00:00:00 2001 From: tolgabuyuktanir Date: Sat, 15 Jun 2019 20:08:59 +0300 Subject: [PATCH 2/4] Extended Euclidean Algorithm for Modulo Inverse --- eea.py | 5 +++-- extended-euclidean-algorithm.py | 22 ---------------------- 2 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 extended-euclidean-algorithm.py diff --git a/eea.py b/eea.py index b8603b1..6f38434 100644 --- a/eea.py +++ b/eea.py @@ -1,5 +1,6 @@ import sys +#author tolgabuyuktanir #Python program for Extended Euclidean algorithm def egcd(a, b): if a == 0: @@ -16,7 +17,7 @@ def main(): a=int(sys.argv[1]) m=int(sys.argv[2]) gcd, x, y = egcd(a,m) - print("gdc:"+str(gcd)+" x:"+str(x), " y:"+str(y)) + print("gdc:"+str(gcd)+" x:"+str(x)+" y:"+str(y)) if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/extended-euclidean-algorithm.py b/extended-euclidean-algorithm.py deleted file mode 100644 index b8603b1..0000000 --- a/extended-euclidean-algorithm.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys - -#Python program for Extended Euclidean algorithm -def egcd(a, b): - if a == 0: - return (b, 0, 1) - else: - gcd, x, y = egcd(b % a, a) - return (gcd, y - (b/a) * x, x) - -def main(): - if(len(sys.argv)!=3): - print("Usage: python3 eea.py a m") - print("\tax+by=1\n\tgdc(a,m)=1") - else: - a=int(sys.argv[1]) - m=int(sys.argv[2]) - gcd, x, y = egcd(a,m) - print("gdc:"+str(gcd)+" x:"+str(x), " y:"+str(y)) - -if __name__ == "__main__": - main() \ No newline at end of file From 3ec46d354a6b97a8dfa9390a4b03707379c8745b Mon Sep 17 00:00:00 2001 From: tolgabuyuktanir Date: Sat, 15 Jun 2019 20:17:35 +0300 Subject: [PATCH 3/4] Extended Euclidean Algorithm for Modulo Inverse --- Screenshot from 2019-06-15 20-16-14.png | Bin 0 -> 45667 bytes eea.py | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 Screenshot from 2019-06-15 20-16-14.png diff --git a/Screenshot from 2019-06-15 20-16-14.png b/Screenshot from 2019-06-15 20-16-14.png new file mode 100644 index 0000000000000000000000000000000000000000..30e595e41184c46332e72446f6fb342461f6c6d7 GIT binary patch literal 45667 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 NoTQRO%_qa4{{nkN&$R#m literal 0 HcmV?d00001 diff --git a/eea.py b/eea.py index 6f38434..985f09a 100644 --- a/eea.py +++ b/eea.py @@ -1,13 +1,12 @@ import sys - -#author tolgabuyuktanir +import math #Python program for Extended Euclidean algorithm def egcd(a, b): if a == 0: return (b, 0, 1) else: gcd, x, y = egcd(b % a, a) - return (gcd, y - (b/a) * x, x) + return (gcd, y - math.floor(b/a) * x, x) def main(): if(len(sys.argv)!=3): From 499afa87b178e9b7c20849a253e047cfd892e306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20B=C3=BCy=C3=BCktan=C4=B1r?= Date: Wed, 24 Jul 2019 11:51:38 +0300 Subject: [PATCH 4/4] Update eea.py --- eea.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eea.py b/eea.py index 985f09a..535d356 100644 --- a/eea.py +++ b/eea.py @@ -1,6 +1,6 @@ import sys import math -#Python program for Extended Euclidean algorithm +#Python script for Extended Euclidean Algorithm def egcd(a, b): if a == 0: return (b, 0, 1)