Coin de Gamma
12 months ago
1 changed files with 62 additions and 0 deletions
@ -0,0 +1,62 @@ |
|||||||
|
use std::collections::HashSet; |
||||||
|
|
||||||
|
struct PN { |
||||||
|
a: u32, |
||||||
|
b: u32, |
||||||
|
ps: String, |
||||||
|
} |
||||||
|
|
||||||
|
impl PN { |
||||||
|
fn new(a: u32, b: u32) -> PN { |
||||||
|
PN { a, b, ps: String::new() } |
||||||
|
} |
||||||
|
|
||||||
|
fn simplify(&mut self, ps: &Vec<u32> ) { |
||||||
|
let mut n = self.a; |
||||||
|
for p in ps { |
||||||
|
let mut k = 0; |
||||||
|
while n % p == 0 { k += 1; n /= p; } |
||||||
|
k *= self.b; |
||||||
|
if k > 0 { |
||||||
|
self.ps += &format!("{},{}.", p, k); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fn er() -> Vec<u32> { |
||||||
|
let mut ns = Vec::new(); |
||||||
|
let mut res = Vec::new(); |
||||||
|
for _i in 0..=100 { ns.push(true); } |
||||||
|
let mut k = 1; |
||||||
|
loop { |
||||||
|
let mut found_next_k = false; |
||||||
|
for j in k + 1..=100 { if ns[j] { k = j; found_next_k = true; break; } } |
||||||
|
if !found_next_k { break; } |
||||||
|
res.push(k as u32); |
||||||
|
for i in (k+k..=100).step_by(k) { ns[i] = false } |
||||||
|
} |
||||||
|
|
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
fn main() { |
||||||
|
let mut hs = HashSet::new(); |
||||||
|
let ps = er(); |
||||||
|
for p in &ps { print!("{} ", p); } |
||||||
|
println!(""); |
||||||
|
|
||||||
|
for a in 2..=100 { |
||||||
|
for b in 2..=100 { |
||||||
|
let mut pn = PN::new(a, b); |
||||||
|
pn.simplify(&ps); |
||||||
|
//println!("{}", pn.ps);
|
||||||
|
hs.insert(pn.ps); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
println!("{}", hs.len()); |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
Loading…
Reference in new issue