[C언어] 최대 공약수 계산 방법

ET의 공부/C언어|2020. 12. 15. 19:13

C언어에서 최대 공약수를 계산하는 방법입니다.

 

 

1.for 문을 이용한 최대 공약수 계산방법

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main()
{
    int n1, n2, i, gcd;
    
    printf("두 정수를 입력: ");
    scanf("%d %d"&n1, &n2);
    
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
    
    printf("%d 와 %d의 최대 공약수: %d\n", n1, n2, gcd);
    
    return 0;
}

 

1. for 문에서 입력받은 n1과 n2중 작은 수의 값까지 1~n까지 반복을 합니다.

2. 입력 받은 두 정수 n1,n2 둘다 나누어지는(약수)의 값을 gcd에 저장합니다.

 

 

2. while 문을 이용한 최대 공약수 계산 방법

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main()
{
    int n1, n2;
    
    printf("두 정수를 입력: ");
    scanf("%d %d",&n1,&n2);
    
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("최대 공약수: %d\n", n1);
    
    return 0;
}

 

큰 정수의 값에 작은 변수의 값을 빼고 그 값을 큰 변수에 저장하는 것을 반복합니다.

 

 

 

댓글()