Family Day update
This commit is contained in:
parent
aac6731f2c
commit
9ad63ea473
2442 changed files with 39761 additions and 8255 deletions
10
Task/Modular-inverse/Prolog/modular-inverse.pro
Normal file
10
Task/Modular-inverse/Prolog/modular-inverse.pro
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
egcd(_, 0, 1, 0) :- !.
|
||||
egcd(A, B, X, Y) :-
|
||||
divmod(A, B, Q, R),
|
||||
egcd(B, R, S, X),
|
||||
Y is S - Q*X.
|
||||
|
||||
modinv(A, B, N) :-
|
||||
egcd(A, B, X, Y),
|
||||
A*X + B*Y =:= 1,
|
||||
N is X mod B.
|
||||
20
Task/Modular-inverse/Swift/modular-inverse.swift
Normal file
20
Task/Modular-inverse/Swift/modular-inverse.swift
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
extension BinaryInteger {
|
||||
@inlinable
|
||||
public func modInv(_ mod: Self) -> Self {
|
||||
var (m, n) = (mod, self)
|
||||
var (x, y) = (Self(0), Self(1))
|
||||
|
||||
while n != 0 {
|
||||
(x, y) = (y, x - (m / n) * y)
|
||||
(m, n) = (n, m % n)
|
||||
}
|
||||
|
||||
while x < 0 {
|
||||
x += mod
|
||||
}
|
||||
|
||||
return x
|
||||
}
|
||||
}
|
||||
|
||||
print(42.modInv(2017))
|
||||
Loading…
Add table
Add a link
Reference in a new issue