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
09-10-2017, 10:21 AM (This post was last modified: 09-10-2017 10:45 AM by Gilles59.)
Post: #2
RE: 50g. Substitution of the FACTORS command
(09-10-2017 10:02 AM)pier4r Wrote:  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.

Hi Pier...
Another way :

Code:
My new Factors command :
«
 PUSH   @ save system flags
  DUP 
   RAD -3 CF  R->I  FACTORS 
  SWAP TYPE NOT { I->R } IFT
 POP @ Restaure system flags
»

If i'm not wrong it's OK with your 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)
No change of the flags setup and angle mode
Find all posts by this user
Quote this message in a reply
Post Reply 




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