## https://yukicoder.me/problems/no/2645 import math MAX_ = 2 * 10 ** 7 def cum_func(cum_array, n): if n <= MAX_: return cum_array[n] else: return math.log(n) - math.log(MAX_) + cum_array[MAX_] def main(): N = int(input()) cum_array = [0] * (MAX_ + 1) a = 0 for i in range(1, MAX_ + 1): a += 1 / i cum_array[i] = a sqrt_n = int(math.sqrt(N)) answer = 0 # 約数がsqrt_n以下のもの for n in range(1, sqrt_n + 1): q = N // n answer += cum_func(cum_array, q) / n # 該当する数が約数として持つ数のわ for num in range(1, sqrt_n + 1): max_n = N // (num) min_n = max(N // (num + 1), sqrt_n) answer += (cum_func(cum_array, max_n) - cum_func(cum_array, min_n)) * cum_func(cum_array, num) print(answer) if __name__ == "__main__": main()