finish 15
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
[package]
|
||||||
|
name = "euler15"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
rust-gmp = "*"
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
lto = true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
use gmp::mpz::Mpz;
|
||||||
|
|
||||||
|
const LENGTH: usize = 20;
|
||||||
|
fn main() {
|
||||||
|
for i in 1..=LENGTH {
|
||||||
|
let i = Mpz::from(i as u32);
|
||||||
|
print!("{i} x {i}: ");
|
||||||
|
|
||||||
|
let divisor = faculty(i.clone());
|
||||||
|
let result = faculty(Mpz::from(2) * i) / (divisor.clone() * divisor);
|
||||||
|
println!("{}", result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn faculty(x: Mpz) -> Mpz {
|
||||||
|
if x == Mpz::one() {
|
||||||
|
x
|
||||||
|
} else {
|
||||||
|
x.clone() * faculty(x - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user