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