Smarandache-Wellin primes: Difference between revisions
Content added Content deleted
(Promoted to 'full' task.) |
(New post.) |
||
Line 454: | Line 454: | ||
19th: index 1087 prime 208614364610327343341589284471 |
19th: index 1087 prime 208614364610327343341589284471 |
||
20th: index 1188 prime 229667386663354357356628334581 |
20th: index 1188 prime 229667386663354357356628334581 |
||
</pre> |
|||
=={{header|Java}}== |
|||
<syntaxhighlight lang="java"> |
|||
import java.math.BigInteger; |
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
import java.util.stream.Stream; |
|||
public final class SmarandacheWellinPrimes { |
|||
public static void main(String[] args) { |
|||
primes = listPrimesUpTo(12_000); |
|||
smarandacheWellinPrimes(); |
|||
System.out.println(); |
|||
derivedSmarandacheWellinPrimes(); |
|||
} |
|||
private static void smarandacheWellinPrimes() { |
|||
int count = 0; |
|||
int index = 1; |
|||
int number = 2; |
|||
String numberString = "2"; |
|||
System.out.println("The first eight Smarandache-Wellin primes are:"); |
|||
while ( count < 8 ) { |
|||
if ( new BigInteger(numberString).isProbablePrime(CERTAINTY_LEVEL) ) { |
|||
count += 1; |
|||
System.out.println(String.format("%2d%s%-4d%s%-5d%s%d", count, ": index = ", index, |
|||
" last prime = ", number, " number of digits = ", numberString.length())); |
|||
} |
|||
number = primes.get(index); |
|||
numberString += number; |
|||
index += 1; |
|||
} |
|||
} |
|||
private static void derivedSmarandacheWellinPrimes() { |
|||
int count = 0; |
|||
int index = 0; |
|||
int[] digitFrequencies = new int[10]; |
|||
System.out.println("The first 20 derived Smarandache-Wellin numbers which are prime:"); |
|||
while ( count < 20 ) { |
|||
String prime = String.valueOf(primes.get(index)); |
|||
for ( char ch : prime.toCharArray() ) { |
|||
digitFrequencies[ch - '0'] += 1; |
|||
} |
|||
index += 1; |
|||
String joined = Arrays.stream(digitFrequencies).mapToObj(String::valueOf).collect(Collectors.joining("")); |
|||
if ( new BigInteger(joined).isProbablePrime(CERTAINTY_LEVEL) ) { |
|||
count += 1; |
|||
System.out.println(String.format("%2d%s%-4d%s%s", count, ": index = ", index, " prime = ", joined)); |
|||
} |
|||
} |
|||
} |
|||
private static List<Integer> listPrimesUpTo(int limit) { |
|||
final int halfLimit = ( limit + 1 ) / 2; |
|||
boolean[] composite = new boolean[halfLimit]; |
|||
for ( int i = 1, p = 3; i < halfLimit; p += 2, i++ ) { |
|||
if ( ! composite[i] ) { |
|||
for ( int a = i + p; a < halfLimit; a += p ) { |
|||
composite[a] = true; |
|||
} |
|||
} |
|||
} |
|||
List<Integer> result = Stream.of(2).limit(1).collect(Collectors.toList()); |
|||
for ( int i = 1, p = 3; i < halfLimit; p += 2, i++ ) { |
|||
if ( ! composite[i] ) { |
|||
result.add(p); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
private static List<Integer> primes; |
|||
private static final int CERTAINTY_LEVEL = 15; |
|||
} |
|||
</syntaxhighlight> |
|||
{{ out }} |
|||
<pre> |
|||
The first eight Smarandache-Wellin primes are: |
|||
1: index = 1 last prime = 2 number of digits = 1 |
|||
2: index = 2 last prime = 3 number of digits = 2 |
|||
3: index = 4 last prime = 7 number of digits = 4 |
|||
4: index = 128 last prime = 719 number of digits = 355 |
|||
5: index = 174 last prime = 1033 number of digits = 499 |
|||
6: index = 342 last prime = 2297 number of digits = 1171 |
|||
7: index = 435 last prime = 3037 number of digits = 1543 |
|||
8: index = 1429 last prime = 11927 number of digits = 5719 |
|||
The first 20 derived Smarandache-Wellin numbers which are prime: |
|||
1: index = 32 prime = 4194123321127 |
|||
2: index = 72 prime = 547233879626521 |
|||
3: index = 73 prime = 547233979727521 |
|||
4: index = 134 prime = 13672766322929571043 |
|||
5: index = 225 prime = 3916856106393739943689 |
|||
6: index = 303 prime = 462696313560586013558131 |
|||
7: index = 309 prime = 532727113760586013758133 |
|||
8: index = 363 prime = 6430314317473636515467149 |
|||
9: index = 462 prime = 8734722823685889120488197 |
|||
10: index = 490 prime = 9035923128899919621189209 |
|||
11: index = 495 prime = 9036023329699969621389211 |
|||
12: index = 522 prime = 9337023533410210710923191219 |
|||
13: index = 538 prime = 94374237357103109113243102223 |
|||
14: index = 624 prime = 117416265406198131121272110263 |
|||
15: index = 721 prime = 141459282456260193137317129313 |
|||
16: index = 738 prime = 144466284461264224139325131317 |
|||
17: index = 790 prime = 156483290479273277162351153339 |
|||
18: index = 852 prime = 164518312512286294233375158359 |
|||
19: index = 1087 prime = 208614364610327343341589284471 |
|||
20: index = 1188 prime = 229667386663354357356628334581 |
|||
</pre> |
</pre> |
||