Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:512 MB

#4270. 性能优化 I

统计

题目描述

从前有个 Python 3 语言的程序是这样的:

ans = 0
n = int(input())
for i in range(1, n + 1):
    for j in range(1, n // i + 1):
        for k in range(1, j + 1):
            x = min(j, k)
            while not(j % x == 0 and k % x == 0):
                x = x - 1
            if x == 1:
                ans = (ans + 1) % 998244353
print(ans)

请注意:

  • Python 3 语言的 range 所指的区间是是左闭右开的;
  • // 代表舍去小数的除法

但是这个程序在 $n$ 不是很大的时候也会显得无能为力。所以你的任务就是优化这个程序的运行速度。

输入格式

第一行一个正整数 $ T $ 表示数据组数。
接下来 $ T $ 行每行一个正整数 $ n $ 表示对程序输入的数。

输出格式

$ T $ 行,对于每组数据输出程序应当输出的数。

样例

input

3
3
1000000007
12345678909876543210

output

6
870325006
591139122

数据范围与提示

本题输入文件较大,请适当优化您的程序的读入速度。

本题共 $ 10 $ 个测试点。各个测试点详细信息如下:

测试点编号 $ T\le $ $ n\le $
$ 1 $ $ 5000 $ $ 10^2 $
$ 2 $ $ 5000 $ $ 10^3 $
$ 3 $ $ 5000 $ $ 10^7 $
$ 4 $ $ 5000 $ $ 10^7 $
$ 5 $ $ 5 $ $ 10^9 $
$ 6 $ $ 5000 $ $ 10^{18} $
$ 7 $ $ 50 $ $ 10^{1000} $
$ 8 $ $ 500 $ $ 10^{10000} $
$ 9 $ $ 50 $ $ 10^{100000} $
$ 10 $ $ 5 $ $ 10^{1000000} $