Strange unique prime triplets: Difference between revisions

Added Java solution
m (→‎{{header|C#|CSharp}}: added note about sieve time)
(Added Java solution)
Line 903:
{{out}}
Same as 'basic' version.
 
=={{header|Java}}==
<lang java>import java.util.*;
 
public class StrangeUniquePrimeTriplets {
public static void main(String[] args) {
strangeUniquePrimeTriplets(30, true);
strangeUniquePrimeTriplets(1000, false);
}
 
private static void strangeUniquePrimeTriplets(int limit, boolean verbose) {
boolean[] sieve = primeSieve(limit * 3);
List<Integer> primeList = new ArrayList<>();
for (int p = 3; p < limit; p += 2) {
if (sieve[p])
primeList.add(p);
}
int n = primeList.size();
// Convert object list to primitive array for performance
int[] primes = new int[n];
for (int i = 0; i < n; ++i)
primes[i] = primeList.get(i);
int count = 0;
if (verbose)
printf("Strange unique prime triplets < %d:", limit);
for (int i = 0; i + 2 < n; ++i) {
for (int j = i + 1; j + 1 < n; ++j) {
int s = primes[i] + primes[j];
for (int k = j + 1; k < n; ++k) {
int sum = s + primes[k];
if (sieve[sum]) {
++count;
if (verbose)
printf("%2d + %2d + %2d = %2d", primes[i], primes[j], primes[k], sum);
}
}
}
}
printf("\nCount of strange unique prime triplets < %d is %d.", limit, count);
}
 
private static boolean[] primeSieve(int limit) {
boolean[] sieve = new boolean[limit];
Arrays.fill(sieve, true);
if (limit > 0)
sieve[0] = false;
if (limit > 1)
sieve[1] = false;
for (int i = 4; i < limit; i += 2)
sieve[i] = false;
for (int p = 3; ; p += 2) {
int q = p * p;
if (q >= limit)
break;
if (sieve[p]) {
int inc = 2 * p;
for (; q < limit; q += inc)
sieve[q] = false;
}
}
return sieve;
}
 
private static void printf(String format, Object... args) {
System.out.println(String.format(format, args));
}
}</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|Julia}}==
1,777

edits