code:
#include<stdio.h>
#include<algorithm>
#include<set>
using namespace std;
set<int> e;//集合e存储输入数组间的gap
int LGD(){
//求该集合所有数的最大公约数
set<int>::iterator it=e.begin();
int num=*it;
for(;num>=1;num--){
int flag=1;
for(set<int>::iterator it=e.begin();it!=e.end();it++){
//迭代器遍历
if(*it%num!=0){
flag=0;
break;
}
}
if(flag==1)return num;
else continue;
}
return 1;//最少为1, 1是所有正整数的约数
}
int main(){
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);//对a排序
for(int i=0;i<n-1;i++){
e.insert(a[i+1]-a[i]);
}
int len=LGD();
int all=(a[n-1]-a[0])/len+1;
printf("%d",all);
return 0;
}