~~打表可知答案为 $n^2$~~
一种几何证明,方法来自于讲评。
考虑把 $n^2$ 个整点放到坐标系中,满足 $(x, y)(x \le n, y \le n)$。
现在从原点向每个满足 $(x, y)(x \perp y)$ 的点引出一条射线,显然每个点都会唯一的被一条射线覆盖到,因为 $(\dfrac{x}{\gcd(x, y)}, \dfrac{y}{\gcd(x, y)})$ 被射线经过,而二者又在一条直线上。
对于每个引出射线的 $(x, y)(x \perp y)$,考虑这条线覆盖的点数,发现恰好就是 $\left \lfloor \dfrac{n}{\max(i, j)} \right \rfloor$,因为当 $k > \left \lfloor \dfrac{n}{\max(i, j)} \right \rfloor$ 时,$(xk, yk)$ 必然其一大于 $n$。
故 $\displaystyle\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lfloor \dfrac{n}{\max(i,j)}\rfloor [i \perp j]$ 可以理解为,引出的若干条射线所覆盖到的点数,因为点数为 $n^2$,所以答案也为 $n^2$。
```
// 如果命运对你缄默, 那就活给他看。
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
// #define int LL
signed main() {
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
ios :: sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n;
cin >> n;
cout << 1LL * n * n << '\n';
return 0;
}
```