Jump to content

Home primes: Difference between revisions

3,496 bytes added ,  10 months ago
m
rust example
m (Formatting .)
m (rust example)
Line 990:
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.
</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>
 
4,105

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.