#include
<iostream>#include
<iomanip>#include<algorithm>usingnamespace
std;intmain(){ longlong
zhanzhuan(longlong
,longlong); intN;
cin >> N; while(N--) { inti,
j; longlong
a[1002], n,t=0,b; cin
>> n; t
= 0; for(i
= 1; i <= n; i++) { cin
>> a[i]; } if(n
== 1) {cout
<< '0'<<
endl; continue;
} for(i
= 1; i <= n; i++) { for(j
= i; j <= n; j++) { b=
zhanzhuan(a[i], a[j]); t
= t + a[i] * a[j] /b-b; } } t
= t * 2; cout
<< t<< endl; } return0;}longlong
zhanzhuan(longlong
x,longlong
y){ longlong
r = 1; if(x
> y)swap(x, y); while(r
!= 0) { r
= x%y; x
= y; y
= r; } returnx;}
本文介绍了一种使用辗转相除法进行最大公约数计算的方法,并在此基础上实现了一个算法优化的例子。通过双重循环遍历数组,计算每对元素的最大公约数并进行特定运算,最终得到一个整数结果。
3761

被折叠的 条评论
为什么被折叠?



