Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
18
Task/Modular-inverse/Rust/modular-inverse-1.rust
Normal file
18
Task/Modular-inverse/Rust/modular-inverse-1.rust
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
fn mod_inv(a: isize, module: isize) -> isize {
|
||||
let mut mn = (module, a);
|
||||
let mut xy = (0, 1);
|
||||
|
||||
while mn.1 != 0 {
|
||||
xy = (xy.1, xy.0 - (mn.0 / mn.1) * xy.1);
|
||||
mn = (mn.1, mn.0 % mn.1);
|
||||
}
|
||||
|
||||
while xy.0 < 0 {
|
||||
xy.0 += module;
|
||||
}
|
||||
xy.0
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("{}", mod_inv(42, 2017))
|
||||
}
|
||||
19
Task/Modular-inverse/Rust/modular-inverse-2.rust
Normal file
19
Task/Modular-inverse/Rust/modular-inverse-2.rust
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
fn modinv(a0: isize, m0: isize) -> isize {
|
||||
if m0 == 1 { return 1 }
|
||||
|
||||
let (mut a, mut m, mut x0, mut inv) = (a0, m0, 0, 1);
|
||||
|
||||
while a > 1 {
|
||||
inv -= (a / m) * x0;
|
||||
a = a % m;
|
||||
std::mem::swap(&mut a, &mut m);
|
||||
std::mem::swap(&mut x0, &mut inv);
|
||||
}
|
||||
|
||||
if inv < 0 { inv += m0 }
|
||||
inv
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("{}", modinv(42, 2017))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue