There are certainly fancier options and more foolproof ones, but maybe this goes in the right direction.
\documentclass[fleqn]{article}
\usepackage{pgf}
\newcommand{\SimplifyFraction}[2]{\pgfmathtruncatemacro{\mygcd}{abs(gcd(#1,#2))}%
\pgfmathtruncatemacro{\simplernumerator}{abs(#1)/\mygcd}%
\pgfmathtruncatemacro{\simplerdenominator}{abs(#2)/\mygcd}%
\pgfmathtruncatemacro{\itest}{2*(\simplerdenominator==1)+(#1/#2<0)}%
$\displaystyle\frac{#1}{#2}=\ifcase\itest
\frac{\simplernumerator}{\simplerdenominator}
\or
-\frac{\simplernumerator}{\simplerdenominator}
\or
\simplernumerator
\or
-\simplernumerator
\fi$}
\begin{document}
\SimplifyFraction{12}{8}
\medskip
\SimplifyFraction{-12}{8}
\medskip
\SimplifyFraction{12}{4}
\medskip
\SimplifyFraction{-12}{4}
\end{document}
Such tricks have been used here on this site by several users to pretty-print ticks in plots, and I just recycle them here. You can, of course, change the syntax and so on, which is why you were asked to provide us with an MWE such that we know what the intended usage is.
\usepackage{pgf} \newcommand{\SimplifyFraction}[2]{\pgfmathtruncatemacro{\mygcd}{abs(gcd(#1,#2))}% \pgfmathtruncatemacro{\simplernumerator}{abs(#1)/\mygcd}% \pgfmathtruncatemacro{\simplerdenominator}{abs(#2)/\mygcd}% \pgfmathtruncatemacro{\itest}{2*(\simplerdenominator==1)+(#1/#2<0)}% $\displaystyle\frac{#1}{#2}=\ifcase\itest \frac{\simplernumerator}{\simplerdenominator} \or -\frac{\simplernumerator}{\simplerdenominator} \or \simplernumerator \or -\simplernumerator \fi$}
.