以下の条件を全て満たす a,ba,b の組を一つ求める問題です。

  • a×b=Na \times b = N
  • 2a2 \leq a
  • 2b2 \leq b
  • a,ba,b は整数

そのような a,ba,b の組が存在するとき、min(a,b)\min(a,b) の上限を見積もってみましょう。
これは、min(a,b)N\min(a,b) \leq \lfloor \sqrt{N} \rfloor です。 これは、以下のように証明できます。

任意の正整数 1N10121 \leq N \leq 10^{12} に対して、 a×b=Na \times b = N かつ a,b2a,b \geq 2 を満たす整数組 a,ba,b が存在するとします。このとき、min(a,b)N\min(a,b) \leq \lfloor \sqrt{N} \rfloor であることを証明します。

証明

  1. 仮に min(a,b)>N\min(a,b) > \sqrt{N} と仮定します。すると、 a>Na > \sqrt{N} かつ b>Nb > \sqrt{N} となります。
  2. この場合、 a×b>N×N=Na \times b > \sqrt{N} \times \sqrt{N} = N となります。しかし、これは a×b=Na \times b = N に矛盾します。
  3. 矛盾が生じたため、仮定が間違っていることが分かります。したがって、 min(a,b)N\min(a,b) \leq \sqrt{N}となります。
  4. min(a,b)\min(a,b) は整数であるため、min(a,b)N\min(a,b) \leq \lfloor \sqrt{N} \rfloor が成り立ちます。

以上より、1N10121 \leq N \leq 10^{12}a×b=Na \times b = Na,b2a,b \geq 2 を満たす a,ba,b に対して、 min(a,b)N\min(a,b) \leq \lfloor \sqrt{N} \rfloor であることが証明されました。

よって、aba \leq b としたとき、 aa の取りうる値の範囲は、2aN2 \leq a \leq \lfloor \sqrt{N} \rfloor であることが分かります。また、 aa を決めたとき、条件を全て満たす bb が存在するかは、 N=0modaN = 0 \mod a を満たすかで判定できます。

これより、2aN2 \leq a \leq \lfloor \sqrt{N} \rfloor の範囲で aa を全探索することで、この問題に正解できます。
計算量は O(N)O(\sqrt{N}) で十分高速です。

以下に Python の実装例を示します。