Erdös-Selfridge categorization of primes: Difference between revisions

Added Wren
(Realize in F#)
 
(Added Wren)
Line 45:
Category 10: first->1065601 last->15472321 count->28
Category 11: first->8524807 last->8524807 count->1
</pre>
 
=={{header|Wren}}==
{{libheader|Wren-math}}
{{libheader|Wren-fmt}}
Second part takes a while.
<lang ecmascript>import "./math" for Int
import "./fmt" for Fmt
 
var limit = (1e6.log * 1e6 * 1.2).floor // should be more than enough
var primes = Int.primeSieve(limit)
 
var cat // recursive
cat = Fn.new { |p|
var pf = Int.primeFactors(p+1)
if (pf.all { |f| f == 2 || f == 3 }) return 1
for (c in 2..11) {
if (pf.all { |f| cat.call(f) < c }) return c
}
return 12
}
 
var es = List.filled(12, null)
for (i in 0..11) es[i] = []
 
System.print("First 200 primes:\n ")
for (p in primes[0..199]) {
var c = cat.call(p)
es[c-1].add(p)
}
for (c in 1..6) {
if (es[c-1].count > 0) {
System.print("Category %(c):")
System.print(es[c-1])
System.print()
}
}
 
System.print("First million primes:\n")
for (p in primes[200...1e6]) {
var c = cat.call(p)
es[c-1].add(p)
}
for (c in 1..12) {
var e = es[c-1]
if (e.count > 0) {
Fmt.print("Category $-2d: First = $7d Last = $8d Count = $6d", c, e[0], e[-1], e.count)
}
}</lang>
 
{{out}}
<pre>
First 200 primes:
Category 1:
[2, 3, 5, 7, 11, 17, 23, 31, 47, 53, 71, 107, 127, 191, 383, 431, 647, 863, 971, 1151]
 
Category 2:
[13, 19, 29, 41, 43, 59, 61, 67, 79, 83, 89, 97, 101, 109, 131, 137, 139, 149, 167, 179, 197, 199, 211, 223, 229, 239, 241, 251, 263, 269, 271, 281, 283, 293, 307, 317, 349, 359, 367, 373, 419, 433, 439, 449, 461, 479, 499, 503, 509, 557, 563, 577, 587, 593, 599, 619, 641, 643, 659, 709, 719, 743, 751, 761, 769, 809, 827, 839, 881, 919, 929, 953, 967, 991, 1019, 1033, 1049, 1069, 1087, 1103, 1187, 1223]
 
Category 3:
[37, 103, 113, 151, 157, 163, 173, 181, 193, 227, 233, 257, 277, 311, 331, 337, 347, 353, 379, 389, 397, 401, 409, 421, 457, 463, 467, 487, 491, 521, 523, 541, 547, 569, 571, 601, 607, 613, 631, 653, 683, 701, 727, 733, 773, 787, 797, 811, 821, 829, 853, 857, 859, 877, 883, 911, 937, 947, 983, 997, 1009, 1013, 1031, 1039, 1051, 1061, 1063, 1091, 1097, 1117, 1123, 1153, 1163, 1171, 1181, 1193, 1217]
 
Category 4:
[73, 313, 443, 617, 661, 673, 677, 691, 739, 757, 823, 887, 907, 941, 977, 1093, 1109, 1129, 1201, 1213]
 
Category 5:
[1021]
 
First million primes:
 
Category 1 : First = 2 Last = 10616831 Count = 46
Category 2 : First = 13 Last = 15482669 Count = 10497
Category 3 : First = 37 Last = 15485863 Count = 201987
Category 4 : First = 73 Last = 15485849 Count = 413891
Category 5 : First = 1021 Last = 15485837 Count = 263109
Category 6 : First = 2917 Last = 15485857 Count = 87560
Category 7 : First = 15013 Last = 15484631 Count = 19389
Category 8 : First = 49681 Last = 15485621 Count = 3129
Category 9 : First = 532801 Last = 15472811 Count = 363
Category 10: First = 1065601 Last = 15472321 Count = 28
Category 11: First = 8524807 Last = 8524807 Count = 1
</pre>
9,485

edits