26 lines
650 B
Plaintext
26 lines
650 B
Plaintext
use prime_factorization::Factorization;
|
|
|
|
fn d(n: i128) -> i128 {
|
|
if n < 0 {
|
|
return -(d(-n));
|
|
} else if n < 2 {
|
|
return 0;
|
|
} else {
|
|
let fpairs = Factorization::run(n as u128).prime_factor_repr();
|
|
if fpairs.len() == 1 && fpairs[0].1 == 1 {
|
|
return 1;
|
|
}
|
|
return fpairs.iter().fold(0_i128, |p, q| p + n * (q.1 as i128) / (q.0 as i128));
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
for n in -99..101 {
|
|
print!("{:5}{}", d(n), { if n % 10 == 0 { "\n" } else {""} });
|
|
}
|
|
println!();
|
|
for m in 1..21 {
|
|
println!("(D for 10 ^ {}) divided by 7 is {}", m, d(10_i128.pow(m)) / 7)
|
|
}
|
|
}
|