96 lines
1.6 KiB
Text
96 lines
1.6 KiB
Text
fn is_prime(n: i32) -> bool {
|
|
for i in 2..n {
|
|
if i * i > n {
|
|
return true;
|
|
}
|
|
if n % i == 0 {
|
|
return false;
|
|
}
|
|
}
|
|
n > 1
|
|
}
|
|
|
|
fn next_prime(n: i32) -> i32 {
|
|
for i in (n+1).. {
|
|
if is_prime(i) {
|
|
return i;
|
|
}
|
|
}
|
|
0
|
|
}
|
|
|
|
fn main() {
|
|
let mut n = 0;
|
|
let mut prime_q = 5;
|
|
let mut prime_p = 3;
|
|
let mut prime_o = 2;
|
|
|
|
print!("First 36 strong primes: ");
|
|
while n < 36 {
|
|
if prime_p > (prime_o + prime_q) / 2 {
|
|
print!("{} ",prime_p);
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("");
|
|
|
|
while prime_p < 1000000 {
|
|
if prime_p > (prime_o + prime_q) / 2 {
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("strong primes below 1,000,000: {}", n);
|
|
|
|
while prime_p < 10000000 {
|
|
if prime_p > (prime_o + prime_q) / 2 {
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("strong primes below 10,000,000: {}", n);
|
|
|
|
n = 0;
|
|
prime_q = 5;
|
|
prime_p = 3;
|
|
prime_o = 2;
|
|
|
|
print!("First 36 weak primes: ");
|
|
while n < 36 {
|
|
if prime_p < (prime_o + prime_q) / 2 {
|
|
print!("{} ",prime_p);
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("");
|
|
|
|
while prime_p < 1000000 {
|
|
if prime_p < (prime_o + prime_q) / 2 {
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("weak primes below 1,000,000: {}", n);
|
|
|
|
while prime_p < 10000000 {
|
|
if prime_p < (prime_o + prime_q) / 2 {
|
|
n += 1;
|
|
}
|
|
prime_o = prime_p;
|
|
prime_p = prime_q;
|
|
prime_q = next_prime(prime_q);
|
|
}
|
|
println!("weak primes below 10,000,000: {}", n);
|
|
}
|