Prime triangle: Difference between revisions

Content added Content deleted
(Added Swift solution)
m (Rust - minor edit)
Line 944: Line 944:
}
}


fn prime_triangle_count(a: &mut [u32], count: &mut u32) {
fn prime_triangle_count(a: &mut [u32]) -> u32 {
let mut count = 0;
if a.len() == 2 {
if a.len() == 2 {
if is_prime(a[0] + a[1]) {
if is_prime(a[0] + a[1]) {
*count += 1;
count += 1;
}
}
return;
} else {
for i in 1..a.len() - 1 {
}
for i in 1..a.len() - 1 {
if is_prime(a[0] + a[i]) {
if is_prime(a[0] + a[i]) {
a.swap(i, 1);
a.swap(i, 1);
count += prime_triangle_count(&mut a[1..]);
prime_triangle_count(&mut a[1..], count);
a.swap(i, 1);
a.swap(i, 1);
}
}
}
}
}
count
}
}


Line 983: Line 985:
for n in 2..21 {
for n in 2..21 {
let mut a: Vec<u32> = (1..=n).collect();
let mut a: Vec<u32> = (1..=n).collect();
let mut count = 0;
if n > 2 {
prime_triangle_count(&mut a, &mut count);
print!(" ");
if n == 2 {
print!("{count}");
} else {
print!(" {count}");
}
}
print!("{}", prime_triangle_count(&mut a));
}
}
println!();
println!();
Line 1,020: Line 1,019:
1 1 1 1 1 2 4 7 24 80 216 648 1304 3392 13808 59448 155464 480728 1588162
1 1 1 1 1 2 4 7 24 80 216 648 1304 3392 13808 59448 155464 480728 1588162


Elapsed time: 754 milliseconds
Elapsed time: 711 milliseconds
</pre>
</pre>