Jump to content

Erdős-primes: Difference between revisions

Added Rust solution
(Added Perl)
(Added Rust solution)
Line 367:
 
999,721 is the 7,875th Erdos prime.
</pre>
 
=={{header|Rust}}==
<lang rust>// [dependencies]
// primal = "0.3"
 
use std::collections::HashSet;
 
fn erdos_primes() -> impl std::iter::Iterator<Item = usize> {
let mut primes = HashSet::new();
let mut all_primes = primal::Primes::all();
std::iter::from_fn(move || {
'all_primes: for p in all_primes.by_ref() {
primes.insert(p);
let mut k = 1;
let mut f = 1;
while f < p {
if primes.contains(&(p - f)) {
continue 'all_primes;
}
k += 1;
f *= k;
}
return Some(p);
}
None
})
}
 
fn main() {
let mut count = 0;
println!("Erd\u{151}s primes less than 2500:");
for p in erdos_primes().take_while(|x| *x < 2500) {
count += 1;
if count % 10 == 0 {
println!("{:4}", p);
} else {
print!("{:4} ", p);
}
}
println!();
if let Some(p) = erdos_primes().nth(7874) {
println!("\nThe 7875th Erd\u{151}s prime is {}.", p);
}
}</lang>
 
{{out}}
<pre>
Erdős primes less than 2500:
2 101 211 367 409 419 461 557 673 709
769 937 967 1009 1201 1259 1709 1831 1889 2141
2221 2309 2351 2411 2437
 
The 7875th Erdős prime is 999721.
</pre>
 
1,777

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.