Coin de Gamma
10 months ago
1 changed files with 66 additions and 0 deletions
@ -0,0 +1,66 @@
|
||||
use std::collections::HashSet; |
||||
|
||||
fn er() -> HashSet<u32> { |
||||
let mut nums = Vec::new(); |
||||
let size = 9999; |
||||
for n in 0..size+1 { nums.push(true); } |
||||
let mut p = 1; |
||||
loop { |
||||
let mut found = false; |
||||
for i in p+1..size { |
||||
if nums[i] { |
||||
found = true; |
||||
p = i; |
||||
break; |
||||
} |
||||
} |
||||
if !found { break; } |
||||
for i in (2 * p .. size).step_by(p) { |
||||
nums[i] = false; |
||||
} |
||||
} |
||||
let mut res = HashSet::new(); |
||||
for i in 2..size { |
||||
if nums[i] { res.insert(i as u32); } |
||||
} |
||||
return res; |
||||
} |
||||
|
||||
fn is_prms(a: u32, b: u32) -> bool { |
||||
let aa = a.to_string(); |
||||
let bb = b.to_string(); |
||||
|
||||
let mut hsa = HashSet::new(); |
||||
let mut hsb = HashSet::new(); |
||||
for c in aa.chars() { |
||||
hsa.insert(c); |
||||
} |
||||
for c in bb.chars() { |
||||
hsb.insert(c); |
||||
} |
||||
|
||||
for _ in hsa.difference(&hsb) { |
||||
return false; |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
|
||||
fn main() { |
||||
let hs = er(); |
||||
|
||||
for p in hs.iter() { |
||||
let p1 = *p; |
||||
let p2 = p1 + 3330; |
||||
let p3 = p2 + 3330; |
||||
if hs.contains(&p1) && hs.contains(&p2) && hs.contains(&p3) { |
||||
if is_prms(p1, p2) && is_prms(p2, p3) { |
||||
println!("{} {} {}", p1, p2, p3); |
||||
} |
||||
}
|
||||
} |
||||
|
||||
//let pp = is_prms(1487, 3300);
|
||||
//println!("{}", pp);
|
||||
|
||||
} |
Loading…
Reference in new issue