#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" MODULE = Mathe          PACKAGE = Mathe long ggT (x,y)     long x     long y   CODE:     while (y != 0) {         long t = y;         y = x % y;         x = t;     }     RETVAL = x;   OUTPUT:     RETVAL void factor (number)     long number   INIT:     long i;     long root = sqrt (number) + 1;   PPCODE:     if (number < 2) {         XPUSHs(sv_2mortal(newSViv(number)));         return;     }     while (number % 2 == 0) {         XPUSHs(sv_2mortal(newSViv(2)));         number /= 2;     }     for (i = 3; i < root; i += 2) {         while (number % i == 0) {             XPUSHs(sv_2mortal(newSViv(i)));             number /= i;         }     }     if (number != 1)         XPUSHs(sv_2mortal(newSViv(number)));