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

julia example
(julia example)
Line 119:
Category 10: first->1065601 last->15472321 count->28
Category 11: first->8524807 last->8524807 count->1
</pre>
 
=={{header|Julia}}==
{{trans|Raku}}
<lang julia>using Primes
 
primefactors(n) = collect(keys(factor(n)))
 
function ErdösSelfridge(n)
highfactors = filter(>(3), primefactors(n + 1))
category = 1
while !isempty(highfactors)
highfactors = unique(reduce(vcat, [filter(>(3), primefactors(a + 1)) for a in highfactors]))
category += 1
end
return category
end
 
function testES(numshowprimes, numtotalprimes)
println("First $numshowprimes primes by Erdös-Selfridge categories:")
dict = Dict{Int, Vector{Int}}(i => [] for i in 1:5)
for p in primes(prime(numshowprimes))
push!(dict[ErdösSelfridge(p)], p)
end
for cat in 1:5
println("$cat => ", dict[cat])
end
dict2 = Dict{Int, Tuple{Int, Int, Int}}(i => (0, 0, 0) for i in 1:11)
println("\nTotals for first $numtotalprimes primes by Erdös-Selfridge categories:")
for p in primes(prime(numtotalprimes))
cat = ErdösSelfridge(p)
fir, tot, las = dict2[cat]
fir == 0 && (fir = p)
dict2[cat] = (fir, tot + 1, p)
end
for cat in 1:11
first, total, last = dict2[cat]
println("Category $cat => first:", lpad(first, 9), ", total:", lpad(total, 7), ", last:", last)
end
end
 
testES(200, 1_000_000)
</lang>{{out}}
<pre>
First 200 primes by Erdös-Selfridge categories:
1 => [2, 3, 5, 7, 11, 17, 23, 31, 47, 53, 71, 107, 127, 191, 383, 431, 647, 863, 971, 1151]
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]
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]
4 => [73, 313, 443, 617, 661, 673, 677, 691, 739, 757, 823, 887, 907, 941, 977, 1093, 1109, 1129, 1201, 1213]
5 => [1021]
 
Totals for first 1000000 primes by Erdös-Selfridge categories:
Category 1 => first: 2, total: 46, last:10616831
Category 2 => first: 13, total: 10497, last:15482669
Category 3 => first: 37, total: 201987, last:15485863
Category 4 => first: 73, total: 413891, last:15485849
Category 5 => first: 1021, total: 263109, last:15485837
Category 6 => first: 2917, total: 87560, last:15485857
Category 7 => first: 15013, total: 19389, last:15484631
Category 8 => first: 49681, total: 3129, last:15485621
Category 9 => first: 532801, total: 363, last:15472811
Category 10 => first: 1065601, total: 28, last:15472321
Category 11 => first: 8524807, total: 1, last:8524807
</pre>
 
4,105

edits