Sisyphus sequence: Difference between revisions
m
→{{header|Wren}}: Changed to Wren S/H
m (Added a description of the program.) |
m (→{{header|Wren}}: Changed to Wren S/H) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 307:
77,534,485,877th member is 36 and highest prime needed is 677,121,348,413
</pre>
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
func isprim num .
if num mod 2 = 0 and num > 2
return 0
.
i = 3
while i <= sqrt num
if num mod i = 0
return 0
.
i += 2
.
return 1
.
prim = 1
proc nextprim . .
repeat
prim += 1
until isprim prim = 1
.
.
numfmt 0 4
n = 1
write n
for i = 2 to 100
if n mod 2 <> 0
nextprim
n += prim
else
n /= 2
.
write n
if i mod 10 = 0
print ""
.
.
</syntaxhighlight>
=={{header|J}}==
Line 344 ⟶ 383:
=={{header|Java}}==
Using a segmented prime
<syntaxhighlight lang="java">
import java.util.ArrayList;
Line 374 ⟶ 413:
} else if ( count == target ) {
target *= 10;
System.out.println(String.format("%11d%s%
target, "th member is ", next, " and highest prime needed is ", iterator.getPrime()));
}
Line 436 ⟶ 475:
final class SegmentedPrimeIterator {
public SegmentedPrimeIterator(long
squareRoot = (int) Math.sqrt(
high = squareRoot;
smallSieve(squareRoot);
Line 476 ⟶ 515:
}
private void smallSieve(int
boolean[] markedPrime = new boolean[
Arrays.fill(markedPrime, true);
for ( int p = 2; p * p <=
if ( markedPrime[p] ) {
for ( int i = p * p; i <=
markedPrime[i] = false;
}
Line 488 ⟶ 527:
}
for ( int p = 2; p <=
if ( markedPrime[p] ) {
primes.add((long) p);
Line 517 ⟶ 556:
48 24 12 6 3 142 71 220 110 55
1000th member is
10000th member is
100000th member is
1000000th member is
10000000th member is
100000000th member is
These numbers under 250 occur the most in the first 1000000000 terms:
Line 1,480 ⟶ 1,519:
Extreme stretch not attempted and out of reasonable reach for Wren-CLI.
<syntaxhighlight lang="
import "./fmt" for Fmt
Line 1,558 ⟶ 1,597:
The following script manages to find the first occurrence of the number 36 in the sequence in about 2 hours 54 minutes which (relative to Phix) is much quicker than one would normally expect. This is probably due to the heavy lifting (i.e. the prime generation) being done here in both cases by C++ though this will tempered by the need to convert unsigned 64-bit integers to doubles (Wren's only numeric type) for each prime generated.
<syntaxhighlight lang="
import "./fmt" for Fmt
|