Honaker primes: Difference between revisions

Content added Content deleted
(Added 11l)
Line 22: Line 22:





=={{header|11l}}==
{{trans|Python}}

<syntaxhighlight lang="11l">
F primes_up_to_limit(Int limit)
[Int] r
I limit >= 2
r.append(2)

V isprime = [1B] * ((limit - 1) I/ 2)
V sieveend = Int(sqrt(limit))
L(i) 0 .< isprime.len
I isprime[i]
Int p = i * 2 + 3
r.append(p)
I i <= sieveend
L(j) ((p * p - 3) >> 1 .< isprime.len).step(p)
isprime[j] = 0B
R r

F digitsum(num)
‘ Digit sum of an integer (base 10) ’
R sum(String(num).map(c -> Int(c)))

F generate_honaker(limit = 5'000'000)
‘ Generate the sequence of Honaker primes with their sequence and primepi values ’
V honaker = enumerate(primes_up_to_limit(limit)).filter((i, p) -> digitsum(p) == digitsum(i + 1)).map((i, p) -> (i + 1, p))
R enumerate(honaker).map((hcount, pp) -> (hcount + 1, pp[0], pp[1]))

print(‘First 50 Honaker primes:’)
L(p) generate_honaker()
I p[0] < 51
print(f:‘{String(p):<16}’, end' I p[0] % 5 == 0 {"\n"} E ‘’)
E I p[0] == 10'000
print(f:"\nThe 10,000th Honaker prime is the {commatize(p[1])}th one, which is {commatize(p[2])}.")
L.break
</syntaxhighlight>

{{out}}
<pre>
First 50 Honaker primes:
(1, 32, 131) (2, 56, 263) (3, 88, 457) (4, 175, 1039) (5, 176, 1049)
(6, 182, 1091) (7, 212, 1301) (8, 218, 1361) (9, 227, 1433) (10, 248, 1571)
(11, 293, 1913) (12, 295, 1933) (13, 323, 2141) (14, 331, 2221) (15, 338, 2273)
(16, 362, 2441) (17, 377, 2591) (18, 386, 2663) (19, 394, 2707) (20, 397, 2719)
(21, 398, 2729) (22, 409, 2803) (23, 439, 3067) (24, 446, 3137) (25, 457, 3229)
(26, 481, 3433) (27, 499, 3559) (28, 508, 3631) (29, 563, 4091) (30, 571, 4153)
(31, 595, 4357) (32, 599, 4397) (33, 635, 4703) (34, 637, 4723) (35, 655, 4903)
(36, 671, 5009) (37, 728, 5507) (38, 751, 5701) (39, 752, 5711) (40, 755, 5741)
(41, 761, 5801) (42, 767, 5843) (43, 779, 5927) (44, 820, 6301) (45, 821, 6311)
(46, 826, 6343) (47, 827, 6353) (48, 847, 6553) (49, 848, 6563) (50, 857, 6653)

The 10,000th Honaker prime is the 286,069th one, which is 4,043,749.
</pre>


=={{header|ALGOL 68}}==
=={{header|ALGOL 68}}==