#include<iostream>
using namespace std;
int min,max;
int* sequence,*distance_arr;
int mini_distance = pow(2,30),max_distance = 0;
int fun(int a,int b);
int main() {
int n, min = pow(2, 30),max = 0;
cin >> n;
sequence = new int[n];
for (int i = 0; i < n;i++) {
cin >> sequence[i];
if (min>sequence[i]) {
min = sequence[i];
}
if (max<sequence[i]) {
max = sequence[i];
}
}
//cout << min << " " << max << endl;
distance_arr = new int[n - 1];
int cnt = 0;
for (int i = 0; i < n;i++) {
if (min != sequence[i]) {
distance_arr[cnt] = sequence[i] - min;
cnt++;
}
}
int distance, distance_min = pow(2, 30);
for (int i = 1; i < n - 1; i++) {
distance = fun(distance_arr[0],distance_arr[i]);
if (distance_min>distance) {
distance_min = distance;
}
}
int min_len = (max - min) / distance_min + 1;
cout << min_len;
return 0;
}
int fun(int a,int b) {
int tmp;
if (a > b) {
while (a%b != 0) {
tmp = b;
b = a % b;
a = tmp;
}
}
else {
tmp = a;
a = b;
b = tmp;
while (a % b != 0) {
tmp = b;
b = a % b;
a = tmp;
}
}
return b;
}