A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
23
Task/Modular-inverse/D/modular-inverse.d
Normal file
23
Task/Modular-inverse/D/modular-inverse.d
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
T modInverse(T)(T a, T b) pure nothrow {
|
||||
if (b == 1)
|
||||
return 1;
|
||||
T b0 = b,
|
||||
x0 = 0,
|
||||
x1 = 1;
|
||||
|
||||
while (a > 1) {
|
||||
immutable q = a / b;
|
||||
auto t = b;
|
||||
b = a % b;
|
||||
a = t;
|
||||
t = x0;
|
||||
x0 = x1 - q * x0;
|
||||
x1 = t;
|
||||
}
|
||||
return (x1 < 0) ? (x1 + b0) : x1;
|
||||
}
|
||||
|
||||
void main() {
|
||||
import std.stdio;
|
||||
writeln(modInverse(42, 2017));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue