Task

Write a program which counts up from   1,   displaying each number as the multiplication of its prime factors.

For the purpose of this task,   1   (unity)   may be shown as itself.



Example

      2   is prime,   so it would be shown as itself.

      6   is not prime;   it would be shown as   



2
×
3


{\displaystyle 2\times 3}

.
2144   is not prime;   it would be shown as   



2
×
2
×
2
×
2
×
2
×
67


{\displaystyle 2\times 2\times 2\times 2\times 2\times 67}

.



Related tasks

   prime decomposition
   factors of an integer
   Sieve of Eratosthenes
   primality by trial division
   factors of a Mersenne number
   trial factoring of a Mersenne number
   partition an integer X into N primes


(define (factors n)
  (let facs ((l '()) (d 2) (x n))
    (cond ((= x 1) (if (null? l) '(1) l))
	  ((< x (* d d)) (cons x l))
	  (else (if (= 0 (modulo x d))
		  (facs (cons d l) d (/ x d))
		  (facs l (+ 1 d) x))))))
 
(define (show l)
  (display (car l))
  (if (not (null? (cdr l)))
    (begin
      (display " × ")
      (show (cdr l)))
    (display "\n")))
 
(do ((i 1 (+ i 1))) (#f)
  (display i)
  (display " = ")
  (show (reverse (factors i))))