Strange unique prime triplets: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) m (→{{header|11l}}) |
|||
Line 279: | Line 279: | ||
Unique prime triples 2-999 which sum to a prime: 241,580 |
Unique prime triples 2-999 which sum to a prime: 241,580 |
||
</pre> |
</pre> |
||
=={{header|C}}== |
|||
<lang c>#include <stdbool.h> |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#define LIMIT 3000 |
|||
void init_sieve(unsigned char sieve[], int limit) { |
|||
int i, j; |
|||
for (i = 0; i < limit; i++) { |
|||
sieve[i] = 1; |
|||
} |
|||
sieve[0] = 0; |
|||
sieve[1] = 0; |
|||
for (i = 2; i < limit; i++) { |
|||
if (sieve[i]) { |
|||
for (j = i + i; j < limit; j += i) { |
|||
sieve[j] = 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
void strange_unique_prime_triplets(unsigned char sieve[], int limit, bool verbose) { |
|||
int count = 0, sum; |
|||
int i, j, k, n, p; |
|||
int pi, pj, pk; |
|||
n = 0; |
|||
for (i = 0; i < limit; i++) { |
|||
if (sieve[i]) { |
|||
n++; |
|||
} |
|||
} |
|||
if (verbose) { |
|||
printf("Strange unique prime triplets < %d:\n", limit); |
|||
} |
|||
for (i = 0; i + 2 < n; i++) { |
|||
pi = 2; |
|||
p = i; |
|||
while (p > 0) { |
|||
pi++; |
|||
if (sieve[pi]) { |
|||
p--; |
|||
} |
|||
} |
|||
for (j = i + 1; j + 1 < n; j++) { |
|||
pj = pi; |
|||
p = j - i; |
|||
while (p > 0) { |
|||
pj++; |
|||
if (sieve[pj]) { |
|||
p--; |
|||
} |
|||
} |
|||
for (k = j + 1; k < n; k++) { |
|||
pk = pj; |
|||
p = k - j; |
|||
while (p > 0) { |
|||
pk++; |
|||
if (sieve[pk]) { |
|||
p--; |
|||
} |
|||
} |
|||
sum = pi + pj + pk; |
|||
if (sum < LIMIT && sieve[sum]) { |
|||
count++; |
|||
if (verbose) { |
|||
printf("%2d + %2d + %2d = %d\n", pi, pj, pk, sum); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
printf("Count of strange unique prime triplets < %d is %d.\n\n", limit, count); |
|||
} |
|||
int main() { |
|||
unsigned char sieve[LIMIT]; |
|||
init_sieve(sieve, LIMIT); |
|||
strange_unique_prime_triplets(sieve, 30, true); |
|||
strange_unique_prime_triplets(sieve, 1000, false); |
|||
return 0; |
|||
}</lang> |
|||
{{out}} |
|||
<pre>Strange unique prime triplets < 30: |
|||
3 + 5 + 11 = 19 |
|||
3 + 5 + 23 = 31 |
|||
3 + 5 + 29 = 37 |
|||
3 + 7 + 13 = 23 |
|||
3 + 7 + 19 = 29 |
|||
3 + 11 + 17 = 31 |
|||
3 + 11 + 23 = 37 |
|||
3 + 11 + 29 = 43 |
|||
3 + 17 + 23 = 43 |
|||
5 + 7 + 11 = 23 |
|||
5 + 7 + 17 = 29 |
|||
5 + 7 + 19 = 31 |
|||
5 + 7 + 29 = 41 |
|||
5 + 11 + 13 = 29 |
|||
5 + 13 + 19 = 37 |
|||
5 + 13 + 23 = 41 |
|||
5 + 13 + 29 = 47 |
|||
5 + 17 + 19 = 41 |
|||
5 + 19 + 23 = 47 |
|||
5 + 19 + 29 = 53 |
|||
7 + 11 + 13 = 31 |
|||
7 + 11 + 19 = 37 |
|||
7 + 11 + 23 = 41 |
|||
7 + 11 + 29 = 47 |
|||
7 + 13 + 17 = 37 |
|||
7 + 13 + 23 = 43 |
|||
7 + 17 + 19 = 43 |
|||
7 + 17 + 23 = 47 |
|||
7 + 17 + 29 = 53 |
|||
7 + 23 + 29 = 59 |
|||
11 + 13 + 17 = 41 |
|||
11 + 13 + 19 = 43 |
|||
11 + 13 + 23 = 47 |
|||
11 + 13 + 29 = 53 |
|||
11 + 17 + 19 = 47 |
|||
11 + 19 + 23 = 53 |
|||
11 + 19 + 29 = 59 |
|||
13 + 17 + 23 = 53 |
|||
13 + 17 + 29 = 59 |
|||
13 + 19 + 29 = 61 |
|||
17 + 19 + 23 = 59 |
|||
19 + 23 + 29 = 71 |
|||
Count of strange unique prime triplets < 30 is 42. |
|||
Count of strange unique prime triplets < 1000 is 241580.</pre> |
|||
=={{header|C#|CSharp}}== |
=={{header|C#|CSharp}}== |