From 56a7612fa82668bbbcf34cd997c112a68cb3f806 Mon Sep 17 00:00:00 2001 From: Coin de Gamma Date: Sun, 5 Mar 2023 08:45:24 +0000 Subject: [PATCH] 012 ok --- 012/main.rs | 36 +++++++++++++++++++++++------------- 012/main_basic.rs | 12 +++--------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/012/main.rs b/012/main.rs index e208e99..413b6eb 100644 --- a/012/main.rs +++ b/012/main.rs @@ -2,20 +2,30 @@ use std::fs::File; use std::io::{ self, BufRead, BufReader }; -const PS_SIZE: usize = 500usize; - fn get_ps() -> Vec { let file = File::open("primes.txt").unwrap(); let lines = io::BufReader::new(file).lines(); return lines.map(|line| line.unwrap().parse::().unwrap()) - .collect(); + .collect(); } -fn divs_num_test(n: u32) -> u32 { - let mut res = 0; - for i in 1..n { - if n % i == 0 { res += 1; } +fn div_num(ps: &Vec, n: u32) -> u32 { + fn max_div(m: u32, k: u32) -> u32 { + let mut res = 0; + let mut mm = m; + while mm % k == 0 { + mm /= k; + res += 1; + } + res + } + + let mut res = 1; + for p in ps { + let md = max_div(n, *p) + 1; + res *= md; } + return res; } @@ -23,12 +33,12 @@ fn main() { let ps = get_ps(); let mut n = 1; let mut best_dn = 1; - for k in 2..50000 { + for k in 2..80000 { n += k; - let dn = 500; //500; //divs_num(n); - //if dn > best_dn { - // best_dn = dn; - //println!("[{}]{}:{}",k, n, dn); - //} + let dn = div_num(&ps, n); + if dn > best_dn { + best_dn = dn; + println!("[{}]{}:{}", k, n, dn); + } } } diff --git a/012/main_basic.rs b/012/main_basic.rs index bf1cdc9..b2e38f8 100644 --- a/012/main_basic.rs +++ b/012/main_basic.rs @@ -1,12 +1,6 @@ -use std::fs::File; -use std::io::{ self, BufRead, BufReader }; - -const PS_SIZE: usize = 500usize; - - -fn divs_num(n: u32) -> u32 { +fn div_num(n: u32) -> u32 { let mut res = 0; - for i in 1..n { + for i in 1..=n { if n % i == 0 { res += 1; } } return res; @@ -17,7 +11,7 @@ fn main() { let mut best_dn = 1; for k in 2..50000 { n += k; - let dn = divs_num(n); + let dn = div_num(n); if dn > best_dn { best_dn = dn; println!("[{}]{}:{}",k, n, dn);