Mit LuaLaTeX.
\documentclass{article}
\usepackage{amsmath}
\usepackage{luacode}
\begin{luacode*}
-- 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
function mersenne(n,k)
mersenne(k,n)
local M = (2*k-1)*2^n-1
tex.sprint(M)
end
\end{luacode*}
\newcommand\rfrac[2]{\directlua{reduce(#1,#2)}}
\newcommand\mersenne[2]{\directlua{mersenne(#1,#2)}}
\begin{document}
$\rfrac{\mersenne{1}{1}}{3}$
$\rfrac{\mersenne{1}{2}}{3}$
$\rfrac{\mersenne{1}{3}}{3}$
$\rfrac{\mersenne{1}{4}}{3}$
$\rfrac{\mersenne{1}{5}}{3}$
\end{document}
[![alt text][1]][1]
[1]: http://texwelt.de/wissen/upfiles/test_372.pnghttp://texwelt.de/wissen/upfiles/test_373.png