You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.3 KiB
67 lines
1.3 KiB
12 months ago
|
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);
|
||
|
|
||
|
}
|