Truncatable primes: Difference between revisions

Added Rust solution
m (Minor edit to C++ code)
(Added Rust solution)
Line 2,972:
<pre>
The largest left truncatable prime less than 1000000 in base 10 is 998443
</pre>
 
=={{header|Rust}}==
<lang rust>fn is_prime(n : u32) -> bool {
if n < 2 {
return false;
}
if n % 2 == 0 {
return n == 2;
}
if n % 3 == 0 {
return n == 3;
}
let mut p = 5;
while p * p <= n {
if n % p == 0 {
return false;
}
p += 2;
if n % p == 0 {
return false;
}
p += 4;
}
true
}
 
fn is_left_truncatable(p : u32) -> bool {
let mut n = 10;
let mut q = p;
while p > n {
if !is_prime(p % n) || q == p % n {
return false;
}
q = p % n;
n *= 10;
}
true
}
fn is_right_truncatable(p : u32) -> bool {
let mut q = p/10;
while q > 0 {
if !is_prime(q) {
return false;
}
q /= 10;
}
true
}
 
fn main() {
let limit = 1000000;
let mut largest_left = 0;
let mut largest_right = 0;
let mut p = limit;
while p >= 2 {
if is_prime(p) && is_left_truncatable(p) {
largest_left = p;
break;
}
p -= 1;
}
println!("Largest left truncatable prime is {}", largest_left);
p = limit;
while p >= 2 {
if is_prime(p) && is_right_truncatable(p) {
largest_right = p;
break;
}
p -= 1;
}
println!("Largest right truncatable prime is {}", largest_right);
}</lang>
 
{{out}}
<pre>
Largest left truncatable prime is 998443
Largest right truncatable prime is 739399
</pre>
 
1,777

edits