Strange unique prime triplets: Difference between revisions

Content added Content deleted
(Added Rust solution)
m (Bug fixes)
Line 118: Line 118:
std::vector<bool> sieve(limit, true);
std::vector<bool> sieve(limit, true);
if (limit > 0)
if (limit > 0)
sieve[0] = false;
if (limit > 1)
sieve[1] = false;
sieve[1] = false;
for (size_t i = 0; i < limit; i += 2)
for (size_t i = 4; i < limit; i += 2)
sieve[i] = false;
sieve[i] = false;
for (size_t p = 3; ; p += 2) {
for (size_t p = 3; ; p += 2) {
Line 401: Line 403:
: prime_sieve ( n -- )
: prime_sieve ( n -- )
here over erase
here over erase
0 notprime!
1 notprime!
1 notprime!
dup 0 do i notprime! 2 +loop
dup 4 > if
dup 4 do i notprime! 2 +loop
then
3
3
begin
begin
Line 1,361: Line 1,366:
let mut sieve = vec![true; limit];
let mut sieve = vec![true; limit];
if limit > 0 {
if limit > 0 {
sieve[0] = false;
}
if limit > 1 {
sieve[1] = false;
sieve[1] = false;
}
}
for i in (0..limit).step_by(2) {
for i in (4..limit).step_by(2) {
sieve[i] = false;
sieve[i] = false;
}
}
Line 1,385: Line 1,393:


fn strange_unique_prime_triplets(limit: usize, verbose: bool) {
fn strange_unique_prime_triplets(limit: usize, verbose: bool) {
let mut primes = Vec::new();
if limit < 6 {
if limit < 8 {
return;
return;
}
}
let mut primes = Vec::new();
let sieve = prime_sieve(limit * 3);
let sieve = prime_sieve(limit * 3);
for p in (3..limit).step_by(2) {
for p in (3..limit).step_by(2) {
Line 1,484: Line 1,492:
}
}
var sieve = Array(repeating: true, count: limit)
var sieve = Array(repeating: true, count: limit)
sieve[1] = false
sieve[0] = false
for i in stride(from: 0, to: limit, by: 2) {
if limit > 1 {
sieve[i] = false
sieve[1] = false
}
if limit > 4 {
for i in stride(from: 4, to: limit, by: 2) {
sieve[i] = false
}
}
}
var p = 3
var p = 3
Line 1,507: Line 1,520:


func strangeUniquePrimeTriplets(limit: Int, verbose: Bool) {
func strangeUniquePrimeTriplets(limit: Int, verbose: Bool) {
guard limit > 5 else {
return;
}
let sieve = primeSieve(limit: 3 * limit)
let sieve = primeSieve(limit: 3 * limit)
var primes: [Int] = []
var primes: [Int] = []