Smarandache prime-digital sequence: Difference between revisions
C code doesn't use a prime sieve (no benefit in this case)
(Added Rust solution) |
(C code doesn't use a prime sieve (no benefit in this case)) |
||
Line 179:
=={{header|C}}==
{{trans|C++}}
<lang c>#include <
#include <stdint.h>
#include <stdio.h>
uint32_t next_prime_digit_number(uint32_t n) {
Line 262 ⟶ 195:
return 2 + next_prime_digit_number(n/10) * 10;
}
}
bool is_prime(uint32_t n) {
if (n < 2)
return false;
if (n % 2 == 0)
return n == 2;
if (n % 3 == 0)
return n == 3;
for (uint32_t p = 5; p * p <= n; p += 4) {
if (n % p == 0)
return false;
p += 2;
if (n % p == 0)
return false;
}
return true;
}
int main() {
const uint32_t limit = 10000000;
uint32_t n = 0, n1 = 0, n2 = 0, n3 = 0;
printf("First 25 SPDS primes:\n");
for (int i = 0; n < limit; ) {
n = next_prime_digit_number(n);
if (!is_prime(n
if (
if (i
}
else if (i == 25)
printf("\n");
++i;
if (i == 100)
n1 = n;
else if (i == 1000)
n2 = n;
n3 = n;
}
printf("Hundredth SPDS prime: %u\n", n1);
printf("Thousandth SPDS prime: %u\n", n2);
|