正の整数 a および n が与えられたとき、

a = m^n

となる整数 m が存在するかしないか判定し、存在する場合には、 m を求めるアルゴリズムはありますか?

実際にプログラミングすることを考えています。
浮動小数点数を使っても構いませんが、結果は厳密に正しい必要はあります。