#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년전에 짠 코드 ㅎㅎㅎㅎ... 나중에 자바로 다시 짜봐야징
댓글