aiの最大の素因数はO(ai)で求めることができますが、制約上O(ai)でも可能です。
aiの最大の素因数を求めた後、問題文の通りにソートする方法はいくつかありますが、ここでは1つのみ紹介します。
aiの最大の素因数をmiとおきます。Xとして十分大きな値を取り、bi=mi×X+aiを満たす配列bをつくります。
bを昇順にソートすることでmiの小さい順に、miが等しい場合はaiの小さい順に並べることができます。
最後に、biをXで割った余りに置き換えることで、求める配列を得られます。
そのため、Xはすべてのaiに対して真に大きい必要があります。