杭电acm2503
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; }