본문 바로가기
공부(~2016)/알고리즘

[알고리즘/C언어] 최소공배수 최대공약수

by soy; 2013. 12. 14.

 

#include<stdio.h>
 
int gcd_func(int x, int y)
{
    if(y==0)
        return x;
    else
        return gcd_func(y, x%y);
}
 
int lcd_func(int x, int y)
{
    int i;
    for(i=1; i<=x; i++)
    {
        if( (y*i) % x == 0 )
        return y*i;
    }
    return 0;
}
 
int main(void)
{
    int num1, num2, temp; // 두 개의 정수 입력 
    int i;   // 카운터 변수, 최대 공약수 임시변수 
    int gcd=0;  // 최대 공약수
    printf("두 개의 정수 입력: ");
    scanf("%d %d", &num1, &num2);
 
    if(num1>num2)  // num1 < num2 이도록 유지
    {
        temp=num1;
        num1=num2;
        num2=temp;
    }
 
    // 방법 1.  num1, num2 대소 관계 몰라도 사용 가능.
    for(i=1; i<=num1 && i<=num2; i++)
        if(num1%i==0 && num2%i==0)      
            gcd=i;
 
    // 방법 2.  num1 < num2 대소 여부 알 때만 사용 가능, 수행 횟수 적음.
    for(i=num1; i>=1; i--) 
    if(num1%i==0 && num2%i==0)      
    {
         gcd=i;
        break;
    }
     
    printf("두 수의 최대 공약수: %d \n", gcd);
    printf("두 수의 최대 공약수: %d \n", gcd_func(num1,num2));
    printf("두 수의 최소 공배수: %d \n", lcd_func(num1,num2));
 
 
    printf("\n");
    return 0;
}
 
cs



여러가지 방법으로 해 보았다......는 3~4년전에 짠 코드 ㅎㅎㅎㅎ... 나중에 자바로 다시 짜봐야징

댓글