Skip to content

PTFOPlayer/euclides

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

euc_lib

Liblary implements:

  • euc - euclidean algorithm
  • euc_ext - extended euclidean algorithm
  • lcm - least common multiple
  • congruence - congruence soliving function, finding smallest x for solution

Want to contribute?:

My github:

github

Project:

github

Support:

https://www.buymeacoffee.com/WhiskyAKM



Example usage:

Euclides

Extended

Program

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I32::euc_ext(135, 35));
}

Output

NWD = 5, S = -1, T = 4

Simple

Program

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I32::euc(135, 35)); // there is recursive variant too: euc_recursive(135,35)
}

Output

5

Vector as an argument

Program

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::euc_from_vec(vec![21, 14, 56]));
}

Output

Ok(7)

LCM

Simple

This version implements Least common multiple calculating method using gcd (Euclidean algorithm)

Program

use euc_lib;
fn main () {
    println!("{}", euc_lib::I32::lcm(21, 6)) // there is recursive variant too: lcm_recursive
}

Output

42

Vector as argument

Program

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::lcm_from_vec(vec![12,4,8]))
}

Output

Ok(24)

Congruence

Program

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::congruence(9,21,30))
}

Output

Ok(9)

i64 support

To use i64 versions of all functions just use euc_lib::I64 instead of euc_lib::I32

Example of I64 usage

Program

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I64::euc_ext(135, 35));
}

Output

NWD = 5, S = -1, T = 4

Releases

No releases published

Packages

No packages published

Languages