func_code_string: #include <bits/stdc++.h>   using namespace std;   int gcd(int a, int b) {     if (b == 0) {       return a;     }     return gcd(b, a % b);   }   int findGCD(int arr[], int n) {     int result = arr[0];     for (int i = 1; i < n; i++) {       result = gcd(arr[i], result);     }     return result;   }   void swap(int* a, int* b) {     int t = *a;     *a = *b;     *b = t;   }   void merge(int arr[], int l, int m, int r) {     int i, j, k;     int n1 = m - l + 1;     int n2 = r - m;     int L[n1], R[n2];     for (i = 0; i < n1; i++) {       L[i] = arr[l + i];     }     for (j = 0; j < n2; j++) {       R[j] = arr[m + 1 + j];     }     i = 0;     j = 0;     k = l;     while (i < n1 && j < n2) {       if (L[i] <= R[j]) {         arr[k] = L[i];         i++;       } else {         arr[k] = R[j];         j++;       }       k++;     }     while (i < n1) {       arr[k] = L[i];       i++;       k++;     }     while (j < n2) {       arr[k] = R[j];       j++;       k++;     }   }   void mergeSort(int arr[], int l, int r) {     if (l < r) {       int m = l + (r - l) / 2;       mergeSort(arr, l, m);       mergeSort(arr, m + 1, r);       merge(arr, l, m, r);     }   }   int main() {     int n, i, gcd, pointsToBeAdded = 0;     cin >> n;     int arr[n];     int differences[n - 1];     for (i = 0; i < n; i++) {       cin >> arr[i];     }     mergeSort(arr, 0, n - 1);     for (i = 1; i < n; i++) {       differences[i - 1] = arr[i] - arr[i - 1];     }     gcd = findGCD(differences, n - 1);     for (i = 0; i < n - 1; i++) {       differences[i] /= gcd;       pointsToBeAdded += differences[i] - 1;     }     cout << pointsToBeAdded;     return 0;   }   