Skip to content
Snippets Groups Projects
Commit b7ef431b authored by Oulawi's avatar Oulawi
Browse files

Add small prime divider

parent c9c13a5a
No related branches found
No related tags found
No related merge requests found
use num_bigint::BigUint; use num_bigint::BigUint;
mod prime_gen;
fn main() { fn main() {
let max_prime = 20000; let n = BigUint::parse_bytes(b"1001692", 10);
let mut sieve = Vec::<Option::<BigUint>>::new(); match n {
for i in 0..max_prime { None => return,
sieve.push(Some(BigUint::new(vec![0 as u32]))); Some(m) => println!("{}", prime_gen::divide_small_primes(&m))
sieve[i] = match &sieve[i] {
Some(n) => Some(n+(i as u32)),
None => None
}
}
sieve[0] = None;
sieve[1] = None;
for i in 2..max_prime {
if sieve[i] == None {
continue;
}
let mut k = 2;
while i*k < max_prime {
sieve[i*k] = None;
k += 1;
}
}
let mut p: usize = 0;
let mut deleted: bool;
while p < sieve.len() {
deleted = false;
if sieve[p] == None {
sieve.remove(p);
deleted = true;
}
p += 1;
if deleted {
p -= 1;
}
}
for bi in sieve {
match bi {
None => println!("None"),
Some(n) => println!("{}",n)
}
} }
} }
use num_bigint::BigUint;
fn erastothenes_sieve(roof: usize) -> Vec::<u64> {
let mut sieve = Vec::<u64>::new();
for i in 0..roof {
sieve.push(i as u64);
}
sieve[1] = 0;
for i in 2..roof {
if sieve[i] == 0 {
continue;
}
let mut k = 2;
while i*k < roof {
sieve[i*k] = 0;
k += 1;
}
}
let mut p: usize = 0;
let mut deleted: bool;
while p < sieve.len() {
deleted = false;
if sieve[p] == 0 {
sieve.remove(p);
deleted = true;
}
if !deleted {
p += 1;
}
}
return sieve;
}
fn divides(b: &BigUint, d: u64) -> bool {
let r = b/d;
if &(r*d) == b {
return true;
}
return false;
}
pub fn divide_small_primes(n: &BigUint) -> bool {
let small_primes = erastothenes_sieve(20000);
for m in small_primes {
if divides(n, m) {
return false;
}
}
return true;
}
\ No newline at end of file
No preview for this file type
/home/olavi/mental-poker/target/debug/mental-poker: /home/olavi/mental-poker/src/main.rs /home/olavi/mental-poker/target/debug/build/num-bigint-62520d68e8c7c363/out/radix_bases.rs build.rs /home/olavi/mental-poker/target/debug/mental-poker: /home/olavi/mental-poker/src/main.rs /home/olavi/mental-poker/src/prime_gen.rs /home/olavi/mental-poker/target/debug/build/num-bigint-62520d68e8c7c363/out/radix_bases.rs build.rs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment