Home primes: Difference between revisions
Content added Content deleted
m (Formatting .) |
m (rust example) |
||
Line 990: | Line 990: | ||
home prime chain for 19: 19 is prime. |
home prime chain for 19: 19 is prime. |
||
home prime chain for 20: HP20(15) ─► HP225(14) ─► HP3355(13) ─► HP51161(12) ─► HP114651(11) ─► HP3312739(10) ─► HP17194867(9) ─► HP194122073(8) ─► HP709273797(7) ─► HP39713717791(6) ─► HP113610337981(5) ─► HP733914786213(4) ─► HP3333723311815403(3) ─► HP131723655857429041(2) ─► HP772688237874641409(1) ─► 3318308475676071413 is prime. |
home prime chain for 20: HP20(15) ─► HP225(14) ─► HP3355(13) ─► HP51161(12) ─► HP114651(11) ─► HP3312739(10) ─► HP17194867(9) ─► HP194122073(8) ─► HP709273797(7) ─► HP39713717791(6) ─► HP113610337981(5) ─► HP733914786213(4) ─► HP3333723311815403(3) ─► HP131723655857429041(2) ─► HP772688237874641409(1) ─► 3318308475676071413 is prime. |
||
</pre> |
|||
=={{header|Rust}}== |
|||
<syntaxhighlight lang="rust">use std::str::FromStr; |
|||
use num_bigint::BigUint; |
|||
use num_prime::nt_funcs::{is_prime, factorize}; |
|||
fn homechains(n: &BigUint) -> Vec<BigUint> { |
|||
let mut links = vec![BigUint::from_str("0").unwrap(); 0].to_vec(); |
|||
if is_prime(n, None).probably() { |
|||
links.push(n.clone()); |
|||
return links; |
|||
} |
|||
let mut s = String::from_str("").unwrap(); |
|||
let d = factorize(n.clone()); |
|||
for (p, e) in d { |
|||
let s2 = format!("{p}"); |
|||
for _ in 0..e { |
|||
s.push_str(&s2); |
|||
} |
|||
} |
|||
let k = BigUint::from_str(&s).unwrap(); |
|||
links.push(k.clone()); |
|||
links.append(&mut homechains(&k)); |
|||
return links; |
|||
} |
|||
fn home_chains_print(num: u64, chains: &mut Vec<BigUint>) { |
|||
let mut clen = chains.len(); |
|||
if clen == 1 { |
|||
println!("HP{num} ─► {num}"); |
|||
} else { |
|||
if chains[clen - 1] == chains[clen - 2] { |
|||
chains.pop(); |
|||
clen -= 1; |
|||
} |
|||
print!("HP{num}({clen}) ─► "); |
|||
for (i, k) in chains.iter().enumerate() { |
|||
if clen - i > 1 { |
|||
print!("HP{k}({}) ─► ", clen - i - 1); |
|||
if (i + 1) % 5 == 0 { |
|||
println!(); |
|||
} |
|||
} else { |
|||
println!("{k}"); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
fn main() { |
|||
for num in 2_u64..21 { |
|||
let m = BigUint::from_str(&format!("{num}")).unwrap(); |
|||
let mut chains = homechains(&m); |
|||
home_chains_print(num, &mut chains); |
|||
} |
|||
let mut chains = homechains(&BigUint::from_str("65").unwrap()); |
|||
home_chains_print(65_u64, &mut chains); |
|||
} |
|||
</syntaxhighlight>{{out}} |
|||
<pre> |
|||
HP2 ─► 2 |
|||
HP3 ─► 3 |
|||
HP4(2) ─► HP22(1) ─► 211 |
|||
HP5 ─► 5 |
|||
HP6(1) ─► 23 |
|||
HP7 ─► 7 |
|||
HP8(13) ─► HP222(12) ─► HP2337(11) ─► HP31941(10) ─► HP33371313(9) ─► HP311123771(8) ─► |
|||
HP7149317941(7) ─► HP22931219729(6) ─► HP112084656339(5) ─► HP3347911118189(4) ─► HP11613496501723(3) ─► |
|||
HP97130517917327(2) ─► HP531832651281459(1) ─► 3331113965338635107 |
|||
HP9(2) ─► HP33(1) ─► 311 |
|||
HP10(4) ─► HP25(3) ─► HP55(2) ─► HP511(1) ─► 773 |
|||
HP11 ─► 11 |
|||
HP12(1) ─► 223 |
|||
HP13 ─► 13 |
|||
HP14(5) ─► HP27(4) ─► HP333(3) ─► HP3337(2) ─► HP4771(1) ─► 13367 |
|||
HP15(4) ─► HP35(3) ─► HP57(2) ─► HP319(1) ─► 1129 |
|||
HP16(4) ─► HP2222(3) ─► HP211101(2) ─► HP3116397(1) ─► 31636373 |
|||
HP17 ─► 17 |
|||
HP18(1) ─► 233 |
|||
HP19 ─► 19 |
|||
HP20(15) ─► HP225(14) ─► HP3355(13) ─► HP51161(12) ─► HP114651(11) ─► HP3312739(10) ─► |
|||
HP17194867(9) ─► HP194122073(8) ─► HP709273797(7) ─► HP39713717791(6) ─► HP113610337981(5) ─► |
|||
HP733914786213(4) ─► HP3333723311815403(3) ─► HP131723655857429041(2) ─► HP772688237874641409(1) ─► 3318308475676071413 |
|||
HP65(19) ─► HP513(18) ─► HP33319(17) ─► HP1113233(16) ─► HP11101203(15) ─► HP332353629(14) ─► |
|||
HP33152324247(13) ─► HP3337473732109(12) ─► HP111801316843763(11) ─► HP151740406071813(10) ─► HP31313548335458223(9) ─► |
|||
HP3397179373752371411(8) ─► HP157116011350675311441(7) ─► HP331333391143947279384649(6) ─► HP11232040692636417517893491(5) |
|||
─► HP711175663983039633268945697(4) ─► |
|||
HP292951656531350398312122544283(3) ─► HP2283450603791282934064985326977(2) ─► HP333297925330304453879367290955541(1) ─► 1381321118321175157763339900357651 |
|||
</pre> |
</pre> |
||