Description
Let a, b, and c be integers. We define function f(a,b,c) as follows:
Order the numbers a, b, c in such a way that a≤b≤c. Then return gcd(a,b), where gcd(a,b) denotes the greatest common divisor (GCD) of integers a and b.
So basically, we take the gcd of the 2 smaller values and ignore the biggest one.
You are given an array a of n elements. Compute the sum of f(ai,aj,ak) for each i, j, k, such that 1≤i<j<k≤n.
More formally, compute i=1∑nj=i+1∑nk=j+1∑nf(ai,aj,ak).
题面翻译
a,b,c 为整数,定义 f(a,b,c) 如下:
将三个数排序,使得 a≤b≤c。则函数返回 gcd(a,b) , 这里 gcd(a,b) 表示 最大公约数 (GCD) 。简而言之,函数返回较小的两个数的最大公约数。
你会得到数组 a,包含 n 个元素。求 f(ai,aj,ak) 之和,其中 1≤i<j<k≤n。
形式化的讲,求 ∑i=1n∑j=i+1n∑k=j+1nf(ai,aj,ak)。
Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤10). The description of the test cases follows.
The first line of each test case contains a single integer n (3≤n≤8⋅104) — length of the array a.
The second line of each test case contains n integers, a1,a2,…,an (1≤ai≤105) — elements of the array a.
It is guaranteed that the sum of n over all test cases does not exceed 8⋅104.
Output
For each test case, output a single number — the sum from the problem statement.
Note
In the first test case, the values of f are as follows:
- i=1, j=2, k=3, f(ai,aj,ak)=f(2,3,6)=gcd(2,3)=1;
- i=1, j=2, k=4, f(ai,aj,ak)=f(2,3,12)=gcd(2,3)=1;
- i=1, j=2, k=5, f(ai,aj,ak)=f(2,3,17)=gcd(2,3)=1;
- i=1, j=3, k=4, f(ai,aj,ak)=f(2,6,12)=gcd(2,6)=2;
- i=1, j=3, k=5, f(ai,aj,ak)=f(2,6,17)=gcd(2,6)=2;
- i=1, j=4, k=5, f(ai,aj,ak)=f(2,12,17)=gcd(2,12)=2;
- i=2, j=3, k=4, f(ai,aj,ak)=f(3,6,12)=gcd(3,6)=3;
- i=2, j=3, k=5, f(ai,aj,ak)=f(3,6,17)=gcd(3,6)=3;
- i=2, j=4, k=5, f(ai,aj,ak)=f(3,12,17)=gcd(3,12)=3;
- i=3, j=4, k=5, f(ai,aj,ak)=f(6,12,17)=gcd(6,12)=6.
The sum over all triples is
1+1+1+2+2+2+3+3+3+6=24.
In the second test case, there are 56 ways to choose values of i, j, k. The sum over all f(ai,aj,ak) is 203.