Post Reply 
50g. Substitution of the FACTORS command
09-10-2017, 10:02 AM (This post was last modified: 09-10-2017 10:06 AM by pier4r.)
Post: #1
50g. Substitution of the FACTORS command
I do not really like to use the built in command FACTORS when I would like to know the factors of a integer number in real format. FACTORS would require some flags to be set plus real to integer conversion.

Sure when I have massive needs, then FACTORS is better, but otherwise I'd like to have a more handy routine.

A quick idea is the one below, but do you know any one else that coded something more robust and fast? Or maybe a MathExt library containing a substitution of FACTORS?

Requirements:
input: an integer or an integer in real form (so with the dot at the end), flag -3 and -105 set or unset, does not matter.
output: the factors of the input number (integers in real or integer form)

Code:

factorsR
  \<<
    {} "resultList" DROP
    2 "possibleDivisor" DROP
    0 "divisorFound" DROP
    
    \->
    @input
    inputNumber
    
    @local var
    resultList
    possibleDivisor
    divisorFound
    \<<
      WHILE
        inputNumber ISPRIME? NOT
        inputNumber 1 >
        AND
      REPEAT
        
        2 'possibleDivisor' STO
        0 'divisorFound' STO
        WHILE
          divisorFound 0 ==
        REPEAT
          IF
            inputNumber possibleDivisor MOD 0 ==
          THEN
            1 'divisorFound' STO
            'resultList' possibleDivisor STO+
            inputNumber possibleDivisor / 'inputNumber' STO
          ELSE
            possibleDivisor NEXTPRIME 'possibleDivisor' STO
          END
        END
      END
      
      'resultList' inputNumber STO+
      
      resultList
    \>>
  \>>

Wikis are great, Contribute :)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
50g. Substitution of the FACTORS command - pier4r - 09-10-2017 10:02 AM



User(s) browsing this thread: 1 Guest(s)