147AC - ABC058C: Digits in Multiplication

ABC057-C (300 points)
問題

 2 つの整数  A, B に対して,  F(A, B) を「 10 進表記における,  A の桁数と  B の桁数のうち大きい方」と定義する.
このとき, 整数 N に対して,  2 つの正の整数  A, B N = A \times B を満たすように動くとき,  F(A, B) の最小値を求める.

  •  1 \leq  N \leq 10^{10}
  • 入力は全て整数
方針
  •  N = A^2 となるとき( N が平方数)がベスト,  N = 1 \times N となるとき( N素数)が最悪.
  •  i = \lfloor \sqrt{N} \rfloor から始めて, 約数が見つかるまで  i 1 ずつ減らしていく.
import math

# input
N = int(input())

i = int(math.sqrt(N))

while i:
    if N % i == 0:
        print(len(str(N // i)))
        break
    else:
        i -= 1