Strange unique prime triplets: Difference between revisions

Line 279:
Unique prime triples 2-999 which sum to a prime: 241,580
</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}}==
1,452

edits