Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Jacobsthal-numbers/Rust/jacobsthal-numbers.rust
Normal file
47
Task/Jacobsthal-numbers/Rust/jacobsthal-numbers.rust
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
// [dependencies]
|
||||
// rug = "0.3"
|
||||
|
||||
use rug::integer::IsPrime;
|
||||
use rug::Integer;
|
||||
|
||||
fn jacobsthal_numbers() -> impl std::iter::Iterator<Item = Integer> {
|
||||
(0..).map(|x| ((Integer::from(1) << x) - if x % 2 == 0 { 1 } else { -1 }) / 3)
|
||||
}
|
||||
|
||||
fn jacobsthal_lucas_numbers() -> impl std::iter::Iterator<Item = Integer> {
|
||||
(0..).map(|x| (Integer::from(1) << x) + if x % 2 == 0 { 1 } else { -1 })
|
||||
}
|
||||
|
||||
fn jacobsthal_oblong_numbers() -> impl std::iter::Iterator<Item = Integer> {
|
||||
let mut jn = jacobsthal_numbers();
|
||||
let mut n0 = jn.next().unwrap();
|
||||
std::iter::from_fn(move || {
|
||||
let n1 = jn.next().unwrap();
|
||||
let result = Integer::from(&n0 * &n1);
|
||||
n0 = n1;
|
||||
Some(result)
|
||||
})
|
||||
}
|
||||
|
||||
fn jacobsthal_primes() -> impl std::iter::Iterator<Item = Integer> {
|
||||
jacobsthal_numbers().filter(|x| x.is_probably_prime(30) != IsPrime::No)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("First 30 Jacobsthal Numbers:");
|
||||
for (i, n) in jacobsthal_numbers().take(30).enumerate() {
|
||||
print!("{:9}{}", n, if (i + 1) % 5 == 0 { "\n" } else { " " });
|
||||
}
|
||||
println!("\nFirst 30 Jacobsthal-Lucas Numbers:");
|
||||
for (i, n) in jacobsthal_lucas_numbers().take(30).enumerate() {
|
||||
print!("{:9}{}", n, if (i + 1) % 5 == 0 { "\n" } else { " " });
|
||||
}
|
||||
println!("\nFirst 20 Jacobsthal oblong Numbers:");
|
||||
for (i, n) in jacobsthal_oblong_numbers().take(20).enumerate() {
|
||||
print!("{:11}{}", n, if (i + 1) % 5 == 0 { "\n" } else { " " });
|
||||
}
|
||||
println!("\nFirst 20 Jacobsthal primes:");
|
||||
for n in jacobsthal_primes().take(20) {
|
||||
println!("{}", n);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue