Allow for providing a custom sieve size.
This commit is contained in:
@@ -19,6 +19,9 @@ Import prime numbers from \fIFILE\fR
|
|||||||
\fB\-t\fR, \fB\-\-test\fR
|
\fB\-t\fR, \fB\-\-test\fR
|
||||||
Test if n is a prime instead of generation
|
Test if n is a prime instead of generation
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-s\fR, \fB\-\-sieve\fR
|
||||||
|
Set a custom sieve size
|
||||||
|
.TP
|
||||||
\fB\-v\fR, \fB\-\-verbose\fR
|
\fB\-v\fR, \fB\-\-verbose\fR
|
||||||
Print all found primes
|
Print all found primes
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
10
src/main.rs
10
src/main.rs
@@ -35,12 +35,12 @@ struct Opt {
|
|||||||
test:bool,
|
test:bool,
|
||||||
#[structopt(help = "Max of the prime to generate or number to test for primality")]
|
#[structopt(help = "Max of the prime to generate or number to test for primality")]
|
||||||
num:usize,
|
num:usize,
|
||||||
|
#[structopt(short, long, default_value = "1000", help = "Set a custom sieve size")]
|
||||||
|
sieve:usize,
|
||||||
//#[structopt(short, long, name = "n", default_value = "1", help = "Number of threads to spawn")]
|
//#[structopt(short, long, name = "n", default_value = "1", help = "Number of threads to spawn")]
|
||||||
//jobs:u64,
|
//jobs:u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
const SEGMENT_SIZE:usize = 0x100000000;
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let opts = Opt::from_args();
|
let opts = Opt::from_args();
|
||||||
let mut prime_list = Vec::new();
|
let mut prime_list = Vec::new();
|
||||||
@@ -69,8 +69,8 @@ fn main() {
|
|||||||
(*prime_list.last().unwrap() + 1) as usize
|
(*prime_list.last().unwrap() + 1) as usize
|
||||||
};
|
};
|
||||||
while start < opts.num {
|
while start < opts.num {
|
||||||
let end = if start + SEGMENT_SIZE < opts.num {
|
let end = if start + opts.sieve < opts.num {
|
||||||
start + SEGMENT_SIZE
|
start + opts.sieve
|
||||||
} else {
|
} else {
|
||||||
opts.num + 1
|
opts.num + 1
|
||||||
};
|
};
|
||||||
@@ -83,7 +83,7 @@ fn main() {
|
|||||||
}
|
}
|
||||||
prime_list.append(&mut new_primes);
|
prime_list.append(&mut new_primes);
|
||||||
|
|
||||||
start += SEGMENT_SIZE;
|
start += opts.sieve;
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.test {
|
if opts.test {
|
||||||
|
|||||||
Reference in New Issue
Block a user