Merge branch 'develop' of gitlab.com:naortega/indivisible into develop
This commit is contained in:
commit
1b9e7acfa9
11
src/main.rs
11
src/main.rs
@ -61,18 +61,26 @@ fn main()
|
|||||||
if opts.test
|
if opts.test
|
||||||
{
|
{
|
||||||
let mut res:bool;
|
let mut res:bool;
|
||||||
|
// if no primes were imported, test from beginning (2)
|
||||||
if primes.len() == 0
|
if primes.len() == 0
|
||||||
{
|
{
|
||||||
res = test::is_prime(n as u64);
|
res = test::is_prime(n as u64);
|
||||||
}
|
}
|
||||||
|
// `n` should be in `primes` if the last prime is larger than `n`
|
||||||
else if primes.back().unwrap() >= &(n as u64)
|
else if primes.back().unwrap() >= &(n as u64)
|
||||||
{
|
{
|
||||||
res = primes.contains(&(n as u64));
|
res = primes.contains(&(n as u64));
|
||||||
}
|
}
|
||||||
|
// we can memory test `n` if the last prime is >= sqrt(n)
|
||||||
else if primes.back().unwrap() >= &((n as f64).sqrt() as u64)
|
else if primes.back().unwrap() >= &((n as f64).sqrt() as u64)
|
||||||
{
|
{
|
||||||
res = test::is_prime_mem(n as u64, &primes)
|
res = test::is_prime_mem(n as u64, &primes)
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* if we have less primes than sqrt(n) then we can test all those
|
||||||
|
* prior to the last prime in the list, and then begin testing odd
|
||||||
|
* numbers.
|
||||||
|
*/
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
res = test::is_prime_mem(n as u64, &primes);
|
res = test::is_prime_mem(n as u64, &primes);
|
||||||
@ -81,6 +89,7 @@ fn main()
|
|||||||
res = test::is_prime_f(n as u64, primes.back().unwrap() + 2);
|
res = test::is_prime_f(n as u64, primes.back().unwrap() + 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if res
|
if res
|
||||||
{
|
{
|
||||||
if opts.verbose
|
if opts.verbose
|
||||||
@ -100,6 +109,7 @@ fn main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// if `primes` already contains the nth prime, print it
|
||||||
if primes.len() >= n
|
if primes.len() >= n
|
||||||
{
|
{
|
||||||
println!("{}", primes.get(n-1).unwrap());
|
println!("{}", primes.get(n-1).unwrap());
|
||||||
@ -110,6 +120,7 @@ fn main()
|
|||||||
|
|
||||||
if primes.len() == 0
|
if primes.len() == 0
|
||||||
{
|
{
|
||||||
|
// assume 2 as a prime
|
||||||
primes.push_back(2);
|
primes.push_back(2);
|
||||||
if opts.verbose
|
if opts.verbose
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,7 @@ pub fn is_prime_f(n:u64, b:u64) -> bool
|
|||||||
start += 1;
|
start += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// skip even numbers
|
||||||
else if start % 2 == 0
|
else if start % 2 == 0
|
||||||
{
|
{
|
||||||
start += 1;
|
start += 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user