Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,100 @@
|
|||
on aliquotSum(n)
|
||||
if (n < 2) then return 0
|
||||
set sum to 1
|
||||
set sqrt to n ^ 0.5
|
||||
set limit to sqrt div 1
|
||||
if (limit = sqrt) then
|
||||
set sum to sum + limit
|
||||
set limit to limit - 1
|
||||
end if
|
||||
repeat with i from 2 to limit
|
||||
if (n mod i is 0) then set sum to sum + i + n div i
|
||||
end repeat
|
||||
|
||||
return sum
|
||||
end aliquotSum
|
||||
|
||||
on hcf(a, b)
|
||||
repeat until (b = 0)
|
||||
set x to a
|
||||
set a to b
|
||||
set b to x mod b
|
||||
end repeat
|
||||
|
||||
if (a < 0) then return -a
|
||||
return a
|
||||
end hcf
|
||||
|
||||
on isDuffinian(n)
|
||||
set aliquot to aliquotSum(n) -- = sigma sum - n. = 1 if n's prime.
|
||||
return ((aliquot > 1) and (hcf(n, aliquot + n) = 1))
|
||||
end isDuffinian
|
||||
|
||||
-- Task code:
|
||||
on matrixToText(matrix, w)
|
||||
script o
|
||||
property matrix : missing value
|
||||
property row : missing value
|
||||
end script
|
||||
|
||||
set o's matrix to matrix
|
||||
set padding to " "
|
||||
repeat with r from 1 to (count o's matrix)
|
||||
set o's row to o's matrix's item r
|
||||
repeat with i from 1 to (count o's row)
|
||||
set o's row's item i to text -w thru end of (padding & o's row's item i)
|
||||
end repeat
|
||||
set o's matrix's item r to join(o's row, "")
|
||||
end repeat
|
||||
|
||||
return join(o's matrix, linefeed)
|
||||
end matrixToText
|
||||
|
||||
on join(lst, delim)
|
||||
set astid to AppleScript's text item delimiters
|
||||
set AppleScript's text item delimiters to delim
|
||||
set txt to lst as text
|
||||
set AppleScript's text item delimiters to astid
|
||||
return txt
|
||||
end join
|
||||
|
||||
on task(duffTarget, tupTarget, tupSize)
|
||||
if ((duffTarget < 1) or (tupTarget < 1) or (tupSize < 2)) then error "Duff parameter(s)."
|
||||
script o
|
||||
property duffinians : {}
|
||||
property tuplets : {}
|
||||
end script
|
||||
|
||||
-- Populate o's duffinians and tuplets lists.
|
||||
set n to 1
|
||||
set tuplet to {}
|
||||
repeat while (((count o's tuplets) < tupTarget) or ((count o's duffinians) < duffTarget))
|
||||
if (isDuffinian(n)) then
|
||||
if ((count o's duffinians) < duffTarget) then set end of o's duffinians to n
|
||||
if (tuplet ends with n - 1) then
|
||||
set end of tuplet to n
|
||||
else
|
||||
if ((count tuplet) = tupSize) then set end of o's tuplets to tuplet
|
||||
set tuplet to {n}
|
||||
end if
|
||||
end if
|
||||
set n to n + 1
|
||||
end repeat
|
||||
|
||||
-- Format for output.
|
||||
set duffinians to {}
|
||||
repeat with i from 1 to duffTarget by 20
|
||||
set j to i + 19
|
||||
if (j > duffTarget) then set j to duffTarget
|
||||
set end of duffinians to items i thru j of o's duffinians
|
||||
end repeat
|
||||
set part1 to "First " & duffTarget & " Duffinian numbers:" & linefeed & ¬
|
||||
matrixToText(duffinians, (count (end of o's duffinians as text)) + 2)
|
||||
set tupletTypes to {missing value, "twins", "triplets:", "quadruplets:", "quintuplets:"}
|
||||
set part2 to "First " & tupTarget & " Duffinian " & item tupSize of tupletTypes & linefeed & ¬
|
||||
matrixToText(o's tuplets, (count (end of end of o's tuplets as text)) + 2)
|
||||
|
||||
return part1 & (linefeed & linefeed & part2)
|
||||
end task
|
||||
|
||||
return task(50, 20, 3) -- First 50 Duffinians, first 20 3-item tuplets.
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
"First 50 Duffinian numbers:
|
||||
4 8 9 16 21 25 27 32 35 36 39 49 50 55 57 63 64 65 75 77
|
||||
81 85 93 98 100 111 115 119 121 125 128 129 133 143 144 155 161 169 171 175
|
||||
183 185 187 189 201 203 205 209 215 217
|
||||
|
||||
First 20 Duffinian triplets:
|
||||
63 64 65
|
||||
323 324 325
|
||||
511 512 513
|
||||
721 722 723
|
||||
899 900 901
|
||||
1443 1444 1445
|
||||
2303 2304 2305
|
||||
2449 2450 2451
|
||||
3599 3600 3601
|
||||
3871 3872 3873
|
||||
5183 5184 5185
|
||||
5617 5618 5619
|
||||
6049 6050 6051
|
||||
6399 6400 6401
|
||||
8449 8450 8451
|
||||
10081 10082 10083
|
||||
10403 10404 10405
|
||||
11663 11664 11665
|
||||
12481 12482 12483
|
||||
13447 13448 13449"
|
||||
Loading…
Add table
Add a link
Reference in a new issue