From 9e45d8e4c7772fb1dd34e551d2c02b9e087a4590 Mon Sep 17 00:00:00 2001 From: Coin de Gamma Date: Sun, 31 Dec 2023 09:57:22 +0000 Subject: [PATCH] 049 ok --- 049/main.rs | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 049/main.rs diff --git a/049/main.rs b/049/main.rs new file mode 100644 index 0000000..d12d616 --- /dev/null +++ b/049/main.rs @@ -0,0 +1,66 @@ +use std::collections::HashSet; + +fn er() -> HashSet { + 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); + +}