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