46
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "euler46"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
itertools = "0.14"
|
||||
primes = { version = "*", path = "../../lib/primes" }
|
||||
@@ -0,0 +1,26 @@
|
||||
use primes::Primes;
|
||||
|
||||
const MAX: usize = 1_000_000;
|
||||
|
||||
fn main() {
|
||||
let primes = Primes::get_between(2, MAX);
|
||||
'outer: for number in iter_odd_composite_numbers(&primes) {
|
||||
for prime in primes.iter().take_while(|p| **p < number) {
|
||||
'inner: for n in 1_usize.. {
|
||||
let sum = prime + 2 * n.pow(2);
|
||||
if sum == number {
|
||||
continue 'outer;
|
||||
}
|
||||
if sum > number {
|
||||
break 'inner;
|
||||
}
|
||||
}
|
||||
}
|
||||
println!("{number}");
|
||||
break 'outer;
|
||||
}
|
||||
}
|
||||
|
||||
fn iter_odd_composite_numbers(primes: &Primes<usize>) -> impl Iterator<Item = usize> {
|
||||
(3..MAX).step_by(2).filter(|n| !primes.contains(n))
|
||||
}
|
||||
Reference in New Issue
Block a user