Prime numbers whose neighboring pairs are tetraprimes: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Still not quite right, manually reverting last two edits.) Tag: Manual revert |
(→{{header|C}}: Wasn't quite right before - hence problem with Wren alignment.) |
||
Line 216: | Line 216: | ||
} |
} |
||
return count == 4; |
return count == 4; |
||
} |
|||
int prevPrime(int n) { |
|||
size_t l = 0, r = size, m; |
|||
⚫ | |||
m = (l + r)/2; |
|||
if (primes[m] > n) { |
|||
r = m; |
|||
} else { |
|||
⚫ | |||
} |
|||
} |
|||
return primes[r-1]; |
|||
} |
} |
||
Line 243: | Line 256: | ||
GArray *tetras; |
GArray *tetras; |
||
init(); |
init(); |
||
int highest5 = prevPrime(100000); |
|||
int highest6 = prevPrime(1000000); |
|||
int highest7 = primes[size - 1]; |
|||
setlocale(LC_NUMERIC, ""); |
setlocale(LC_NUMERIC, ""); |
||
for (s = 0; s < size; ++s) { |
for (s = 0; s < size; ++s) { |
||
p = primes[s]; |
p = primes[s]; |
||
⚫ | |||
// process even numbers first as likely to have most factors |
|||
if (isTetraPrime(p-1) && isTetraPrime(p-2)) { |
|||
g_array_append_val(tetras1, p); |
|||
if ((p-1)%7 == 0 || (p-2)%7 == 0) ++sevens1; |
|||
} |
|||
if (isTetraPrime(p+1) && isTetraPrime(p+2)) { |
|||
g_array_append_val(tetras2, p); |
|||
g_array_append_val(tetras2, p); |
|||
if ((p+1)%7 == 0 || (p+2)%7 == 0) ++sevens2; |
|||
} |
} |
||
if (p == highest5 || p == highest6 || p == highest7) { |
|||
for (i = 0; i < 2; ++i) { |
for (i = 0; i < 2; ++i) { |
||
tetras = (i == 0) ? tetras1 : tetras2; |
tetras = (i == 0) ? tetras1 : tetras2; |
||
Line 263: | Line 281: | ||
t = (i == 0) ? "preceding" : "following"; |
t = (i == 0) ? "preceding" : "following"; |
||
printf("Found %'d primes under %'d whose %s neighboring pair are tetraprimes", c, j, t); |
printf("Found %'d primes under %'d whose %s neighboring pair are tetraprimes", c, j, t); |
||
if ( |
if (p == highest5) { |
||
printf(":\n"); |
printf(":\n"); |
||
for (k = 0; k < tetras->len; ++k) { |
for (k = 0; k < tetras->len; ++k) { |
||
Line 287: | Line 305: | ||
free(gaps); |
free(gaps); |
||
} |
} |
||
⚫ | |||
j *= 10; |
j *= 10; |
||
} |
} |