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