Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
30
Task/Amicable-pairs/BCPL/amicable-pairs.bcpl
Normal file
30
Task/Amicable-pairs/BCPL/amicable-pairs.bcpl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
get "libhdr"
|
||||
|
||||
manifest $(
|
||||
MAXIMUM = 20000
|
||||
$)
|
||||
|
||||
// Calculate proper divisors for 1..N
|
||||
let propDivSums(n) = valof
|
||||
$( let v = getvec(n)
|
||||
for i = 1 to n do v!i := 1
|
||||
for i = 2 to n/2 do
|
||||
$( let j = i*2
|
||||
while j < n do
|
||||
$( v!j := v!j + i
|
||||
j := j + i
|
||||
$)
|
||||
$)
|
||||
resultis v
|
||||
$)
|
||||
|
||||
// Are A and B an amicable pair, given the list of sums of proper divisors?
|
||||
let amicable(pdiv, a, b) = a = pdiv!b & b = pdiv!a
|
||||
|
||||
let start() be
|
||||
$( let pds = propDivSums(MAXIMUM)
|
||||
for x = 1 to MAXIMUM do
|
||||
for y = x+1 to MAXIMUM do
|
||||
if amicable(pds, x, y) do
|
||||
writef("%N, %N*N", x, y)
|
||||
$)
|
||||
Loading…
Add table
Add a link
Reference in a new issue