#include <iostream>
#include <vector>
using namespace std;
const int MAX_VAL = 1e6; // Maximum possible value of elements in the array
// Function to calculate sum of GCD over all pairs
long long gcd_sum_over_pairs(const vector<int>& arr) {
// Step 1: Create a frequency array
vector<int> freq(MAX_VAL + 1, 0);
for (int num : arr) {
freq[num]++;
}
// Step 2: Create an array to store the number of pairs with GCD exactly g
vector<long long> gcd_pairs(MAX_VAL + 1, 0);
// Step 3: For each gcd value `g`, calculate how many multiples of `g` exist
for (int g = MAX_VAL; g >= 1; g--) {
long long count_g = 0;
// Count numbers divisible by g (these include numbers divisible by 2g, 3g, etc.)
for (int multiple = g; multiple <= MAX_VAL; multiple += g) {
count_g += freq[multiple];
}
// If there are at least 2 numbers divisible by g
if (count_g >= 2) {
// Total pairs where GCD >= g
gcd_pairs[g] = count_g * (count_g - 1) / 2;
// Subtract pairs where GCD is a multiple of g (like 2g, 3g, etc.)
for (int multiple = 2 * g; multiple <= MAX_VAL; multiple += g) {
gcd_pairs[g] -= gcd_pairs[multiple];
}
}
}
// Step 4: Calculate the total sum of GCDs over all pairs
long long result = 0;
for (int g = 1; g <= MAX_VAL; g++) {
result += g * gcd_pairs[g]; // Add contribution from all pairs where GCD is exactly g
}
return result;
}
int main() {
// Example usage
int n;
cin >> n;
int x;
vector<int> arr;
for(int i = 0; i < n; ++i){
cin >> x;
arr.push_back(x);
}
// Call the function and print the result
cout << gcd_sum_over_pairs(arr) << endl;
return 0;
}