#include #include //2数の最大公約数を返す int gcd(int a, int b) { if(b==0) { return a; } else if((a%b)==0) { return b; } else { return gcd(b, a%b); } } //小さい順に挿入ソート void sort(int num[ ], int n) { int i, j, temp; for (i = 1; i < n; i++) { temp = num[i]; for (j = i; j > 0 && num[j-1] > temp; j--) num[j] = num[j -1]; num[j] = temp; } } //確認用 void print(int a[]) { for(int i=0; i<4; i++){ printf("%d ", a[i]); } printf("\n"); } int main(void) { int a[4]; while(1){ scanf("%d %d %d %d", &a[0], &a[1], &a[2], &a[3]); if(a[0]==0 && a[1]==0 && a[2]==0 && a[3]==0){ break; } print(a); //0以外の椀の数を数える int count=0; for(int i=0; i<4; i++){ if(a[i]>0){ count++; } } //小さい順にソート sort(a, 4); int n; //0以外が4つだったら、1個目と2個目の最大公約数と //3個目と4個目の最大公約数の、最大公約数 if(count==4){ n=gcd(gcd(a[0],a[1]), gcd(a[2],a[3])); //0以外が3つだったら、2個目と、3個目と4個目の最大公約数の、最大公約数 }else if(count==3){ n=gcd(a[1], gcd(a[2],a[3])); //0以外が2つだったら、3個目と4個目の最大公約数 }else{ n=gcd(a[2], a[3]); } printf("%d\n", n); } return(0); }