Create problem27.rs
This commit is contained in:
parent
6cf3070bb4
commit
287fd1d84a
67
problem27.rs
Normal file
67
problem27.rs
Normal file
@ -0,0 +1,67 @@
|
||||
#[derive(Debug)]
|
||||
struct MaxValues {
|
||||
pub a: isize,
|
||||
pub b: isize,
|
||||
pub n: isize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
enum IsPrime {
|
||||
Prime,
|
||||
NotPrime,
|
||||
}
|
||||
|
||||
impl IsPrime {
|
||||
pub fn is_prime(&self) -> bool {
|
||||
match self {
|
||||
Self::Prime => true,
|
||||
|
||||
Self::NotPrime => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn is_number_prime(i: isize, sieve: &Vec<IsPrime>) -> bool {
|
||||
if i < 0 {
|
||||
false
|
||||
}
|
||||
else {
|
||||
sieve[i as usize].is_prime()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut sieve = vec![IsPrime::Prime; 1_000_000];
|
||||
|
||||
for i in 2..999_999_usize {
|
||||
if is_number_prime(i as isize, &sieve) {
|
||||
let mut i_m = i * 2;
|
||||
|
||||
while i_m <= 999_999 {
|
||||
sieve[i_m] = IsPrime::NotPrime;
|
||||
|
||||
i_m += i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut maxes = MaxValues { a: 0, b: 0, n: 0 };
|
||||
|
||||
for a in -999..999 {
|
||||
for b in -1000..1000 {
|
||||
let mut n: isize = 0;
|
||||
|
||||
while is_number_prime(n.pow(2) + a*n + b, &sieve) {
|
||||
n += 1;
|
||||
}
|
||||
|
||||
if n > maxes.n {
|
||||
maxes.n = n;
|
||||
maxes.a = a;
|
||||
maxes.b = b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println!("{:?}", maxes);
|
||||
}
|
Loading…
Reference in New Issue
Block a user