* 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 * [>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]- [>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<] ++++++++++.

AltStyle によって変換されたページ (->オリジナル) /