35 lines
650 B
Text
35 lines
650 B
Text
fn double(a: i32) -> i32 {
|
|
2*a
|
|
}
|
|
|
|
fn halve(a: i32) -> i32 {
|
|
a/2
|
|
}
|
|
|
|
fn is_even(a: i32) -> bool {
|
|
a % 2 == 0
|
|
}
|
|
|
|
fn ethiopian_multiplication(mut x: i32, mut y: i32) -> i32 {
|
|
let mut sum = 0;
|
|
|
|
while x >= 1 {
|
|
print!("{} \t {}", x, y);
|
|
match is_even(x) {
|
|
true => println!("\t Not Kept"),
|
|
false => {
|
|
println!("\t Kept");
|
|
sum += y;
|
|
}
|
|
}
|
|
x = halve(x);
|
|
y = double(y);
|
|
}
|
|
sum
|
|
}
|
|
|
|
fn main() {
|
|
let output = ethiopian_multiplication(17, 34);
|
|
println!("---------------------------------");
|
|
println!("\t {}", output);
|
|
}
|