A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
34
Task/Arithmetic-Rational/Icon/arithmetic-rational-1.icon
Normal file
34
Task/Arithmetic-Rational/Icon/arithmetic-rational-1.icon
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
procedure main()
|
||||
limit := 2^19
|
||||
|
||||
write("Perfect numbers up to ",limit," (using rational arithmetic):")
|
||||
every write(is_perfect(c := 2 to limit))
|
||||
write("End of perfect numbers")
|
||||
|
||||
# verify the rest of the implementation
|
||||
|
||||
zero := makerat(0) # from integer
|
||||
half := makerat(0.5) # from real
|
||||
qtr := makerat("1/4") # from strings ...
|
||||
one := makerat("1")
|
||||
mone := makerat("-1")
|
||||
|
||||
verifyrat("eqrat",zero,zero)
|
||||
verifyrat("ltrat",zero,half)
|
||||
verifyrat("ltrat",half,zero)
|
||||
verifyrat("gtrat",zero,half)
|
||||
verifyrat("gtrat",half,zero)
|
||||
verifyrat("nerat",zero,half)
|
||||
verifyrat("nerat",zero,zero)
|
||||
verifyrat("absrat",mone,)
|
||||
|
||||
end
|
||||
|
||||
procedure is_perfect(c) #: test for perfect numbers using rational arithmetic
|
||||
rsum := rational(1, c, 1)
|
||||
every f := 2 to sqrt(c) do
|
||||
if 0 = c % f then
|
||||
rsum := addrat(rsum,addrat(rational(1,f,1),rational(1,integer(c/f),1)))
|
||||
if rsum.numer = rsum.denom = 1 then
|
||||
return c
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue