Ormiston pairs: Difference between revisions
Content added Content deleted
(Added Rust solution) |
|||
Line 578: | Line 578: | ||
382 Ormiston pairs before one million |
382 Ormiston pairs before one million |
||
3722 Ormiston pairs before ten million</pre> |
3722 Ormiston pairs before ten million</pre> |
||
=={{header|Rust}}== |
|||
<syntaxhighlight lang="rust">// [dependencies] |
|||
// primal = "0.3" |
|||
fn get_digits(mut n: usize) -> [usize; 10] { |
|||
let mut digits = [0; 10]; |
|||
while n > 0 { |
|||
digits[n % 10] += 1; |
|||
n /= 10; |
|||
} |
|||
digits |
|||
} |
|||
fn ormiston_pairs() -> impl std::iter::Iterator<Item = (usize, usize)> { |
|||
let mut digits = [0; 10]; |
|||
let mut prime = 0; |
|||
let mut primes = primal::Primes::all(); |
|||
std::iter::from_fn(move || { |
|||
for p in primes.by_ref() { |
|||
let prime0 = prime; |
|||
prime = p; |
|||
let digits0 = digits; |
|||
digits = get_digits(prime); |
|||
if digits == digits0 { |
|||
return Some((prime0, prime)); |
|||
} |
|||
} |
|||
None |
|||
}) |
|||
} |
|||
fn main() { |
|||
let mut count = 0; |
|||
let mut op = ormiston_pairs(); |
|||
println!("First 30 Ormiston pairs:"); |
|||
for (p1, p2) in op.by_ref() { |
|||
count += 1; |
|||
let c = if count % 3 == 0 { '\n' } else { ' ' }; |
|||
print!("({:5}, {:5}){}", p1, p2, c); |
|||
if count == 30 { |
|||
break; |
|||
} |
|||
} |
|||
println!(); |
|||
let mut limit = 1000000; |
|||
for (p1, _) in op.by_ref() { |
|||
if p1 > limit { |
|||
println!("Number of Ormiston pairs < {}: {}", limit, count); |
|||
limit *= 10; |
|||
if limit == 10000000000 { |
|||
break; |
|||
} |
|||
} |
|||
count += 1; |
|||
} |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
First 30 Ormiston pairs: |
|||
( 1913, 1931) (18379, 18397) (19013, 19031) |
|||
(25013, 25031) (34613, 34631) (35617, 35671) |
|||
(35879, 35897) (36979, 36997) (37379, 37397) |
|||
(37813, 37831) (40013, 40031) (40213, 40231) |
|||
(40639, 40693) (45613, 45631) (48091, 48109) |
|||
(49279, 49297) (51613, 51631) (55313, 55331) |
|||
(56179, 56197) (56713, 56731) (58613, 58631) |
|||
(63079, 63097) (63179, 63197) (64091, 64109) |
|||
(65479, 65497) (66413, 66431) (74779, 74797) |
|||
(75913, 75931) (76213, 76231) (76579, 76597) |
|||
Number of Ormiston pairs < 1000000: 382 |
|||
Number of Ormiston pairs < 10000000: 3722 |
|||
Number of Ormiston pairs < 100000000: 34901 |
|||
Number of Ormiston pairs < 1000000000: 326926 |
|||
</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |