Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,73 @@
|
|||
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;
|
||||
}
|
||||
if n % 5 == 0 {
|
||||
return n == 5;
|
||||
}
|
||||
let mut p = 7;
|
||||
const WHEEL: [u32; 8] = [4, 2, 4, 2, 4, 6, 2, 6];
|
||||
loop {
|
||||
for w in &WHEEL {
|
||||
if p * p > n {
|
||||
return true;
|
||||
}
|
||||
if n % p == 0 {
|
||||
return false;
|
||||
}
|
||||
p += w;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn next_prime_digit_number(n: u32) -> u32 {
|
||||
if n == 0 {
|
||||
return 2;
|
||||
}
|
||||
match n % 10 {
|
||||
2 => n + 1,
|
||||
3 | 5 => n + 2,
|
||||
_ => 2 + next_prime_digit_number(n / 10) * 10,
|
||||
}
|
||||
}
|
||||
|
||||
fn smarandache_prime_digital_sequence() -> impl std::iter::Iterator<Item = u32> {
|
||||
let mut n = 0;
|
||||
std::iter::from_fn(move || {
|
||||
loop {
|
||||
n = next_prime_digit_number(n);
|
||||
if is_prime(n) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Some(n)
|
||||
})
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let limit = 1000000000;
|
||||
let mut seq = smarandache_prime_digital_sequence().take_while(|x| *x < limit);
|
||||
println!("First 25 SPDS primes:");
|
||||
for i in seq.by_ref().take(25) {
|
||||
print!("{} ", i);
|
||||
}
|
||||
println!();
|
||||
if let Some(p) = seq.by_ref().nth(99 - 25) {
|
||||
println!("100th SPDS prime: {}", p);
|
||||
}
|
||||
if let Some(p) = seq.by_ref().nth(999 - 100) {
|
||||
println!("1000th SPDS prime: {}", p);
|
||||
}
|
||||
if let Some(p) = seq.by_ref().nth(9999 - 1000) {
|
||||
println!("10,000th SPDS prime: {}", p);
|
||||
}
|
||||
if let Some(p) = seq.last() {
|
||||
println!("Largest SPDS prime less than {}: {}", limit, p);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue