35 lines
763 B
Plaintext
35 lines
763 B
Plaintext
CompilerIf #PB_Compiler_Debugger
|
|
CompilerError "Turn off the debugger if you want reasonable speed in this example."
|
|
CompilerEndIf
|
|
|
|
Define.q
|
|
|
|
Procedure Factor(Number, List Factors())
|
|
Protected I = 3
|
|
While Number % 2 = 0
|
|
AddElement(Factors())
|
|
Factors() = 2
|
|
Number / 2
|
|
Wend
|
|
Protected Max = Number
|
|
While I <= Max And Number > 1
|
|
While Number % I = 0
|
|
AddElement(Factors())
|
|
Factors() = I
|
|
Number/I
|
|
Wend
|
|
I + 2
|
|
Wend
|
|
EndProcedure
|
|
|
|
Number = 9007199254740991
|
|
NewList Factors()
|
|
time = ElapsedMilliseconds()
|
|
Factor(Number, Factors())
|
|
time = ElapsedMilliseconds()-time
|
|
S.s = "Factored " + Str(Number) + " in " + StrD(time/1000, 2) + " seconds."
|
|
ForEach Factors()
|
|
S + #CRLF$ + Str(Factors())
|
|
Next
|
|
MessageRequester("", S)
|