RosettaCodeData/Task/Amicable-pairs/PureBasic/amicable-pairs.basic

35 lines
753 B
Plaintext

EnableExplicit
Procedure.i SumProperDivisors(Number)
If Number < 2 : ProcedureReturn 0 : EndIf
Protected i, sum = 0
For i = 1 To Number / 2
If Number % i = 0
sum + i
EndIf
Next
ProcedureReturn sum
EndProcedure
Define n, f
Define Dim sum(19999)
If OpenConsole()
For n = 1 To 19999
sum(n) = SumProperDivisors(n)
Next
PrintN("The pairs of amicable numbers below 20,000 are : ")
PrintN("")
For n = 1 To 19998
f = sum(n)
If f <= n Or f < 1 Or f > 19999 : Continue : EndIf
If f = sum(n) And n = sum(f)
PrintN(RSet(Str(n),5) + " and " + RSet(Str(sum(n)), 5))
EndIf
Next
PrintN("")
PrintN("Press any key to close the console")
Repeat: Delay(10) : Until Inkey() <> ""
CloseConsole()
EndIf