min = s1<s2? s1 : s2;
for(j=2; j<min/2; j++) {
if(!(s1%j) && !(s2%j)) {
s1 /= j;
s2 /= j;
j = 1;
}
}
这段代码是主要部分。
也可以求s1和s2的最大公约数,分子分母都除以最大公约数。
#include <stdio.h>
int main() {
int n, i, j, a, b, c, d, s1, s2, min;
while(scanf("%d", &n) != EOF) {
for(i=0; i<n; i++) {
scanf("%d%d%d%d", &a, &b, &c, &d);
s1 = a * d + c * b;;
s2 = b * d;
min = s1<s2? s1 : s2;
for(j=2; j<min/2; j++) {
if(!(s1%j) && !(s2%j)) {
s1 /= j;
s2 /= j;
j = 1;
}
}
printf("%d %d\n", s1, s2);
}
}
return 0;
}