최대공약수 문제 질문!!
날놓아줘
2023.04.01
#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문에 뭔가 오류가 있을것같은데 뭘까요..?
-
god
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;
이렇게하면 됩니다. -
새누
와 잘출력됩니다.
감사합니다. -
꽃바라기슬아
for문에서 G가 2부터 커지고 있기 때문에 1보다 큰 가장 작은 공약수가 출력됩니다.
for(G = a; G 0; G--)로 고치면 되지 않을까요?