标签:
给定六个正整数a,b,c,d,e,f;问你是否存在整数既是a,b,c的最大公约的倍数,同时又是d,e,f的最小公倍数的约数。
32 40 16 20 30 24 0 0 0 0 0 0
YES
32,40,16的最大公约数是:8;而20,30,24的最小公倍数为120,显然存在整数(如24),既是8的倍数,又是120的约数
#include<cstdio> int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int a, b, c, d, e, f, i, j,k, k1, k2; int t=0; while (1) { k1 = k2 = 0; scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f); if (!a&&!b&&!c&&!d&&!e&&!f) break; b=gcd(a,b); k1=gcd(b,c); if(d>=e&&d>=f) k=d; if(e>=d&&e>=f) k=e; else k=f; j=1; while(1) { t=j*k; if(t%d==0&&t%e==0&&t%f==0) break; else j++; } /*此处在求三个数的最小公倍数时,先找到三个数中最大的数k, 随着t=j*k,当t%d==0&&t%e==0&&t%f==0时,t就是满足条件的LCM*/ for (i = k1, j = 1; i <= t / 2; j++, i = j * k1) if (t % i == 0) break; if (i > t / 2) printf("NO\n"); else printf("YES\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/orchidzjl/p/4263423.html