Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
120
Task/Arithmetic-Rational/Liberty-BASIC/arithmetic-rational.basic
Normal file
120
Task/Arithmetic-Rational/Liberty-BASIC/arithmetic-rational.basic
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
n=2^19
|
||||
for testNumber=1 to n
|
||||
sum$=castToFraction$(0)
|
||||
for factorTest=1 to sqr(testNumber)
|
||||
if GCD(factorTest,testNumber)=factorTest then sum$=add$(sum$,add$(reciprocal$(castToFraction$(factorTest)),reciprocal$(castToFraction$(testNumber/factorTest))))
|
||||
next factorTest
|
||||
if equal(sum$,castToFraction$(2))=1 then print testNumber
|
||||
next testNumber
|
||||
end
|
||||
|
||||
function abs$(a$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
bNumerator=abs(aNumerator)
|
||||
bDenominator=abs(aDenominator)
|
||||
b$=str$(bNumerator)+"/"+str$(bDenominator)
|
||||
abs$=simplify$(b$)
|
||||
end function
|
||||
|
||||
function negate$(a$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
bNumerator=-1*aNumerator
|
||||
bDenominator=aDenominator
|
||||
b$=str$(bNumerator)+"/"+str$(bDenominator)
|
||||
negate$=simplify$(b$)
|
||||
end function
|
||||
|
||||
function add$(a$,b$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
bNumerator=val(word$(b$,1,"/"))
|
||||
bDenominator=val(word$(b$,2,"/"))
|
||||
cNumerator=(aNumerator*bDenominator+bNumerator*aDenominator)
|
||||
cDenominator=aDenominator*bDenominator
|
||||
c$=str$(cNumerator)+"/"+str$(cDenominator)
|
||||
add$=simplify$(c$)
|
||||
end function
|
||||
|
||||
function subtract$(a$,b$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
bNumerator=val(word$(b$,1,"/"))
|
||||
bDenominator=val(word$(b$,2,"/"))
|
||||
cNumerator=(aNumerator*bDenominator-bNumerator*aDenominator)
|
||||
cDenominator=aDenominator*bDenominator
|
||||
c$=str$(cNumerator)+"/"+str$(cDenominator)
|
||||
subtract$=simplify$(c$)
|
||||
end function
|
||||
|
||||
function multiply$(a$,b$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
bNumerator=val(word$(b$,1,"/"))
|
||||
bDenominator=val(word$(b$,2,"/"))
|
||||
cNumerator=aNumerator*bNumerator
|
||||
cDenominator=aDenominator*bDenominator
|
||||
c$=str$(cNumerator)+"/"+str$(cDenominator)
|
||||
multiply$=simplify$(c$)
|
||||
end function
|
||||
|
||||
function divide$(a$,b$)
|
||||
divide$=multiply$(a$,reciprocal$(b$))
|
||||
end function
|
||||
|
||||
function simplify$(a$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
gcd=GCD(aNumerator,aDenominator)
|
||||
if aNumerator<0 and aDenominator<0 then gcd=-1*gcd
|
||||
bNumerator=aNumerator/gcd
|
||||
bDenominator=aDenominator/gcd
|
||||
b$=str$(bNumerator)+"/"+str$(bDenominator)
|
||||
simplify$=b$
|
||||
end function
|
||||
|
||||
function reciprocal$(a$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
reciprocal$=str$(aDenominator)+"/"+str$(aNumerator)
|
||||
end function
|
||||
|
||||
function equal(a$,b$)
|
||||
if simplify$(a$)=simplify$(b$) then equal=1:else equal=0
|
||||
end function
|
||||
|
||||
function castToFraction$(a)
|
||||
do
|
||||
exp=exp+1
|
||||
a=a*10
|
||||
loop until a=int(a)
|
||||
castToFraction$=simplify$(str$(a)+"/"+str$(10^exp))
|
||||
end function
|
||||
|
||||
function castToReal(a$)
|
||||
aNumerator=val(word$(a$,1,"/"))
|
||||
aDenominator=val(word$(a$,2,"/"))
|
||||
castToReal=aNumerator/aDenominator
|
||||
end function
|
||||
|
||||
function castToInt(a$)
|
||||
castToInt=int(castToReal(a$))
|
||||
end function
|
||||
|
||||
function GCD(a,b)
|
||||
if a=0 then
|
||||
GCD=1
|
||||
else
|
||||
if a>=b then
|
||||
while b
|
||||
c = a
|
||||
a = b
|
||||
b = c mod b
|
||||
GCD = abs(a)
|
||||
wend
|
||||
else
|
||||
GCD=GCD(b,a)
|
||||
end if
|
||||
end if
|
||||
end function
|
||||
Loading…
Add table
Add a link
Reference in a new issue