#include <stdio.h>
int f(int a,int b){//找出最大公因数
return a%b==0?b:f(b,a%b);
}
int main(){
int m,n,j,i;
int num[10000];
int der[10000];
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&num[i]);
for(i=0;i<n-1;i++){//将输入的数字排序
for(j=0;j<n-1;j++){
if(num[j]>num[j+1]){
int l=num[j];
num[j]=num[j+1];
num[j+1]=l;
}
}
}
int l=0;
for(i=0;i<n-1;i++){
der[l++]=num[i+1]-num[i];//将所以数字的前后差值存入数组中
}
int gc=der[0];
for(i=1;i<l;i++){
gc=f(gc,der[i]);
}
for(i=0;i<n-1;i++){
if(num[i+1]-num[i]==gc)continue;//如果后一个数字是满足等差的,就跳过
else{//不满足就加一个
for(j=n-1;j>=i+1;j--){
num[j+1]=num[j];
}
num[i+1]=num[i]+gc;
n++;
i--;
}
}
for(i=0;i<n;i++){
printf("%d ",num[i]);
}
return 0;
}
等差数列C语言
最新推荐文章于 2024-03-13 14:55:59 发布