|  | @@ -0,0 +1,195 @@
 | 
	
		
			
				|  |  | +* factor an arbitrarily large positive integer
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +* Copyright (C) 1999 by Brian Raiter
 | 
	
		
			
				|  |  | +* under the GNU General Public License
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +* read in the number
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<<<<<<<<<+
 | 
	
		
			
				|  |  | +[-[>>>>>>>>>>][-]<<<<<<<<<<[[->>>>>>>>>>+<<<<<<<<<<]<<<<<<<<<<]
 | 
	
		
			
				|  |  | +  >>>>>>>>>>,----------]
 | 
	
		
			
				|  |  | +>>>>>>>>>>[------------------------------------->>>>>>>>>->]
 | 
	
		
			
				|  |  | +<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +* display the number and initialize the loop variable to two
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[>++++++++++++++++++++++++++++++++++++++++++++++++.
 | 
	
		
			
				|  |  | +  ------------------------------------------------<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
 | 
	
		
			
				|  |  | +--------------------------.[-]
 | 
	
		
			
				|  |  | +>>>>>>>>>>>>++<<<<+
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +* the main loop
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[ [-]>>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +  * make copies of the number and the loop variable
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  [>>>>[-]>[-]>[-]>[-]
 | 
	
		
			
				|  |  | +    >[-]>[-]
 | 
	
		
			
				|  |  | +    <<<<<<<[->>>+>+<<<<]>>>>>>>>]
 | 
	
		
			
				|  |  | +  <<<<<<<<<<[>>>>>>[-<<<<+>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +  [>[->>>+>>+<<<<<]>>>>>>>>>]
 | 
	
		
			
				|  |  | +  <<<<<<<<<<[>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +  * divide the number by the loop variable
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  [>>>[-]>>>[-]>[-]>>>]                                  initialize
 | 
	
		
			
				|  |  | +  <<<<<<<<<<[<<<<<<<<<<]
 | 
	
		
			
				|  |  | +  >>>>>>>>>[-]>>>>>>>+<<<<<<<<[+]+
 | 
	
		
			
				|  |  | +  [ ->>                               double divisor until above dividend
 | 
	
		
			
				|  |  | +    [>>>>>>[->++<]>>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-]>[-]
 | 
	
		
			
				|  |  | +       <<<<[->>>++<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    [>>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
 | 
	
		
			
				|  |  | +            [->--------->>>>>>>>>+<<<<<<<<<<[->+<]]]]]]]]]]]>>]
 | 
	
		
			
				|  |  | +    <<<<<<<<<<[>>>>>>>>>[-<+<<<+>>>>]<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    [>>>>>>>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>
 | 
	
		
			
				|  |  | +            [-<--------->>>>>>>>>>>+<<<<<<<<<<[-<+>]]]]]]]]]]]>>>]
 | 
	
		
			
				|  |  | +    <<<<<<<<<<
 | 
	
		
			
				|  |  | +    [>>>>[->>>+>>+<<<<<]<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>>>[>>>>>>>[-<<<+>>>]>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [>>>>>>>>[->-<]>
 | 
	
		
			
				|  |  | +      [<<<<<<<<<[<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +        >>>>>>>>>>>>>>>>>>>]
 | 
	
		
			
				|  |  | +      <<<<<<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>>[+[+[+[+[+[+[+[+[+[+[[-]<+>]]]]]]]]]]]<
 | 
	
		
			
				|  |  | +  ]
 | 
	
		
			
				|  |  | +  >>>>>>>>
 | 
	
		
			
				|  |  | +  [                                   subtract divisor from dividend
 | 
	
		
			
				|  |  | +    <<<<<<
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-]>[-]<<<<<[->>>+>+<<<<]>>>>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-<<<<+>>>>]<<<[->>>+>+<<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    [>>>>>>>>>[-<<<<+>>>>]>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-<->]<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    [>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
 | 
	
		
			
				|  |  | +            [++++++++++[+>-<]>>>>>>>>>>-<<<<<<<<<<]]]]]]]]]]]>>>]
 | 
	
		
			
				|  |  | +    >>>>>>>+
 | 
	
		
			
				|  |  | +    [                                 if difference is nonnegative then
 | 
	
		
			
				|  |  | +      [-]<<<<<<<<<<<<<<<<<            replace dividend and increment quotient
 | 
	
		
			
				|  |  | +      [>>>>[-]>>>>[-<<<<+>>>>]<<[->>+<<]<<<<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +      [>>>>>>>>[->+<<<+>>]>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +      [>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +      [>>>>>>>>>[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
 | 
	
		
			
				|  |  | +                [-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
 | 
	
		
			
				|  |  | +                [-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
 | 
	
		
			
				|  |  | +                [-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
 | 
	
		
			
				|  |  | +                [-<<<<<<+>>>>>>[-<<<<<<--------->>>>>>>>>>>>>>>>+<<<<<<<<<<
 | 
	
		
			
				|  |  | +                [-<<<<<<+>>>>>>]]]]]]]]]]]>]
 | 
	
		
			
				|  |  | +      >>>>>>>
 | 
	
		
			
				|  |  | +    ]                                 halve divisor and loop until zero
 | 
	
		
			
				|  |  | +    <<<<<<<<<<<<<<<<<[<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-]<<[->+<]<[->>>+<<<]>>>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [+>>>>>>>[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
 | 
	
		
			
				|  |  | +             [-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
 | 
	
		
			
				|  |  | +             [-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
 | 
	
		
			
				|  |  | +             [-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
 | 
	
		
			
				|  |  | +             [-<<<<<<<+>>>>>>>]]]]]]]]]<<<<<<<
 | 
	
		
			
				|  |  | +             [->>>>>>>+<<<<<<<]-<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>
 | 
	
		
			
				|  |  | +    [-<<<<<<<<<<<+>>>>>>>>>>>]
 | 
	
		
			
				|  |  | +      >>>[>>>>>>>[-<<<<<<<<<<<+++++>>>>>>>>>>>]>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [+>>>>>>>>[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
 | 
	
		
			
				|  |  | +              [-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
 | 
	
		
			
				|  |  | +              [-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
 | 
	
		
			
				|  |  | +              [-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
 | 
	
		
			
				|  |  | +              [-<<<<<<<<+>>>>>>>>]]]]]]]]]<<<<<<<<
 | 
	
		
			
				|  |  | +              [->>>>>>>>+<<<<<<<<]-<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>
 | 
	
		
			
				|  |  | +    [>>>>>>>>[-<<<<<<<<<<<<<+++++>>>>>>>>>>>>>]>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +    [<<<<<<<<<<]>>>>>>>>>>
 | 
	
		
			
				|  |  | +    >>>>>>
 | 
	
		
			
				|  |  | +  ]
 | 
	
		
			
				|  |  | +  <<<<<<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +  * make copies of the loop variable and the quotient
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  [>>>[->>>>+>+<<<<<]>>>>>>>]
 | 
	
		
			
				|  |  | +  <<<<<<<<<<
 | 
	
		
			
				|  |  | +  [>>>>>>>[-<<<<+>>>>]<<<<<[->>>>>+>>+<<<<<<<]<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +  >>>>>>>>>>[>>>>>>>[-<<<<<+>>>>>]>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +  * break out of the loop if the quotient is larger than the loop variable
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  [>>>>>>>>>[-<->]<
 | 
	
		
			
				|  |  | +    [<<<<<<<<
 | 
	
		
			
				|  |  | +      [<<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +  >>>>>>>>[>-<[+[+[+[+[+[+[+[+[+[[-]>+<]]]]]]]]]]]>+
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  [ [-]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +    * partially increment the loop variable
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <[-]+>>>>+>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +    * examine the remainder for nonzero digits
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [<<<<<<[<<<<[<<<<<<<<<<]>>>>+<<<<<<<<<<]<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<[<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>-
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [ [+]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      *
 | 
	
		
			
				|  |  | +      * decrement the loop variable and replace the number with the quotient
 | 
	
		
			
				|  |  | +      *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      >>>>>>>>-<<[>[-]>>[-<<+>>]>>>>>>>]<<<<<<<<<<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      *
 | 
	
		
			
				|  |  | +      * display the loop variable
 | 
	
		
			
				|  |  | +      *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      [+>>[>>>>>>>>+>>]<<-<<<<<<<<<<]-
 | 
	
		
			
				|  |  | +      [>>++++++++++++++++++++++++++++++++++++++++++++++++.
 | 
	
		
			
				|  |  | +         ------------------------------------------------<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +      ++++++++++++++++++++++++++++++++.[-]>>>>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +    * normalize the loop variable
 | 
	
		
			
				|  |  | +    *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    >>>>>>
 | 
	
		
			
				|  |  | +    [>>[->>>>>+<<<<<[->>>>>+<<<<<
 | 
	
		
			
				|  |  | +       [->>>>>+<<<<<[->>>>>+<<<<<
 | 
	
		
			
				|  |  | +       [->>>>>+<<<<<[->>>>>+<<<<<
 | 
	
		
			
				|  |  | +       [->>>>>+<<<<<[->>>>>+<<<<<
 | 
	
		
			
				|  |  | +       [->>>>>+<<<<<[->>>>>--------->>>>>+<<<<<<<<<<
 | 
	
		
			
				|  |  | +       [->>>>>+<<<<<]]]]]]]]]]]>>>>>>>>]
 | 
	
		
			
				|  |  | +    <<<<<<<<<<[>>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +    >>>>>>>>>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ]<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +]>>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +* display the number and end
 | 
	
		
			
				|  |  | +*
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
 | 
	
		
			
				|  |  | +[>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<]
 | 
	
		
			
				|  |  | +++++++++++.
 |