최대공약수 문제 질문!!

#include stdio.h
int main(void)
{
int a,b,G;
printf(두개의 정수 입력 : );
scanf(%d %d, &a, &b);
for(G=2; Ga && Gb; G++)
{
if(a%G==0 && b%G==0)
break;
}
printf(%d\n,G);
return 0;
}

6 9하면 3이라고 잘나오는데 9 18하면 9가 나와야 정상인데 3이 나오더라고요...

if문에 뭔가 오류가 있을것같은데 뭘까요..?

댓글 3

  • 소년틳터프 2025.11.09

    int G_; // 추가
    int count = 0; // 추가. 최대 공약수가 1인경우를 위해서.
    for(G=2; G=a && G=b; G++) // 조건부에서 를 = 으로 바꾸기
    {
    if(a%G==0 && b%G==0){
    G_=G; // 공약수가 여러개일 경우 최대값을 저장
    count++;
    }
    }
    if(count != 0)
    G = G_;
    else // 2이상의 공약수가 없으면 최대공약수는 1이다.
    G = 1;

    이렇게하면 됩니다.

  • 후력 2025.11.09

    와 잘출력됩니다.
    감사합니다.

  • 무크 2025.11.09

    for문에서 G가 2부터 커지고 있기 때문에 1보다 큰 가장 작은 공약수가 출력됩니다.
    for(G = a; G 0; G--)로 고치면 되지 않을까요?

C언어 다른 글

목록