/
sort.sf
55 lines (43 loc) · 1.32 KB
/
sort.sf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/ruby
# Sort upper-bounds, selecting the smallest ones.
func f(n) {
tau(n) - 2**omega(n)
}
func isok(n, k) {
(f(k) == 2*n) && (f(k+1) == 2*n)
}
var table = Hash()
DATA.each {|line|
if (line =~ /^a\((\d+)\) <?= (\d+)/) {|m|
var n = m[0].to_i
var k = m[1].to_i
next if (n == 0)
if (isok(n, k-1)) {
k -= 1
}
assert(isok(n,k), "#{n} -- #{k}")
if (!table.has(n) || (k <= table{n})) {
table{n} = k
}
}
}
table.sort_by {|k| k.to_i }.each_2d {|n,k|
say "a(#{n}) <= #{k}"
}
__END__
a(16) = 126224 -> 2^4 * 7^3 * 23^1
a(24) = 17803071 -> 3^4 * 11^1 * 13^1 * 29^1 * 53^1
a(48) = 117937918160 -> 2^4 * 5^1 * 73^1 * 79^1 * 101^1 * 2531^1
a(56) = 785827457792 -> 2^8 * 13^1 * 17^1 * 31^1 * 448057^1
a(28) = 57341024 -> 2^5 * 13^2 * 23^1 * 461^1
a(22) = 33026048 -> 2^12 * 11^1 * 733^1
a(14) = 4402431 -> 3^8 * 11^1 * 61^1
a(34) = 771354193599 -> 3^18 * 11^1 * 181^1
a(22) = 4388175 -> 3^4 * 5^2 * 11^1 * 197^1
a(8) = 12375 -> 3^2 * 5^3 * 11^1
a(32) = 72059624 -> 2^3 * 7^1 * 13^1 * 31^2 * 103^1
a(48) = 440042624 -> 2^7 * 7^1 * 23^1 * 131^1 * 163^1
a(24) = 13503104 -> 2^7 * 31^1 * 41^1 * 83^1
a(56) = 989690624 -> 2^8 * 13^1 * 31^1 * 53^1 * 181^1
a(28) = 46234880 -> 2^8 * 5^1 * 41^1 * 881^1
a(40) = 37590399 -> 3^5 * 7^3 * 11^1 * 41^1