Sehr ähnlich mit Lua:
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{luacode}
    
    \begin{luacode*}
    -- https://de.wikipedia.org/wiki/Größter_gemeinsamer_Teiler#Euklidischer_und_steinscher_Algorithmus
https://de.wikipedia.org/wiki/Euklidischer_Algorithmus
    local function gcd(a,b)
       return (b ~= 0) and gcd(b,a%b) or a
    end
    
    function reduce(a,b)
       local c = gcd(a,b)
       local a = a/c
       local b = b/c
       if (b == 1) then
          tex.sprint(a)
       else
          tex.sprint("\\frac{" .. a .. "}{" .. b .. "}")
       end
    end
    \end{luacode*}
    
    \newcommand\rfrac[2]{\directlua{reduce(#1,#2)}}
    
    \begin{document}
    
    $\rfrac{6}{2}$
    $\rfrac{17}{11}$
    $\rfrac{4}{12}$
    
    \end{document}
[![alt text][1]][1]
  [1]: http://texwelt.de/wissen/upfiles/test_371.png