最大公約數和最小公倍數

模版  求兩個數的最大公約數

int gcd(int a,int b)
{
 return b==0?a:gcd(b,a%b);
}

hdu 2503
複製代碼
  1.  #include<stdio.h>
  2. int gcd(int a,int b)
  3. {
  4.  return b==0?a:gcd(b,a%b);
  5. }
  6. int main()
  7. {
  8.    
  9.  int t,a,b,c,d,n,m,k;
  10.  scanf("%d",&t);
  11.  while(t--)
  12.  {
  13.   scanf("%d%d%d%d",&a,&b,&c,&d);
  14.   n=gcd(b,d);
  15.   m=a*d/n+c*b/n;
  16.   k=gcd(m,b*d/n);
  17.   printf("%d %d\n",m/k,b*d/n/k);
  18.  }
  19.  return 0;
  20. }

 hdu 1713

複製代碼
  1. #include<stdio.h>
  2. __int64 gcd(__int64 a,__int64 b)
  3. {
  4.  return b==0?a:gcd(b,a%b);
  5. }
  6. int main()
  7. {
  8.    
  9.  __int64 t,a,b,c,d,n,k,a1,a2,a3;
  10.  scanf("%I64d",&t);
  11.  while(t--)
  12.  {
  13.   scanf("%I64d%*c%I64d %I64d%*c%I64d",&a,&b,&c,&d);
  14.   n=gcd(a*d,b*c);
  15.   k=gcd(a*b*c*d,b*d*n);
  16.  
  17.   if(n*b*d==k) printf("%I64d\n",a*b*c*d/k);
  18.   else printf("%I64d/%I64d\n",a*b*c*d/k,n*b*d/k);
  19.  }
  20.  return 0;
  21. }

hdu 2504
複製代碼
  1.  
  2.  #include<stdio.h>
  3. int gcd(int a,int b)
  4. {
  5.  return b==0?a:gcd(b,a%b);
  6. }
  7. int main()
  8. {
  9.    
  10.  int t,a,b,c,d,n,m,k,i;
  11.  scanf("%d",&t);
  12.  while(t--)
  13.  {
  14.   scanf("%d%d",&a,&b);
  15.   c=b+1;
  16.   while(1)
  17.   {
  18.    if(gcd(a,c)==b) break;
  19.    c++;
  20.   }
  21.   printf("%d\n",c);
  22.  }
  23.  return 0;
  24. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章