문제
내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void gcdlcm(int a, int b, int *p, int *q) { //최대공약수 최소공배수 구하는 함수
int small = a; //일단 a가 더 작다고 가정
if(a>b){ //b가 더 작을 경우
small = b; //작은 수를 b로 설정
}
for(int i = 2; i<=small; i++){ //2부터 small까지 반복
if(a%i == 0 && b%i ==0){ //둘 다 나누어떨어질 경우
*p = i; //p의 값에 현재 i 저장
}
}
//최종 p의 값이 최대공약수
*q = (a*b)/(*p); //a*b의 값을 p의 값으로 나눔 == 최소공배수
printf("%d %d\n", *p, *q); //최대공약수 최소공배수 순으로 출력
}
int main() {
int a,b; //비교할 수 입력
scanf("%d %d", &a, &b);
int gcd = 1; //최대공약수
int lcm = 1; //최소공배수
gcdlcm(a,b,&gcd,&lcm); //gcdlcm 호출(a,b는 int형 gcd, lcm은 포인터로)
return 0;
}
'C언어 > 주차별 문제' 카테고리의 다른 글
[8주차] 2차원 배열 평균 (0) | 2023.04.23 |
---|---|
[7주차] 내림차순 정렬 (0) | 2023.04.23 |
[7주차] BMI 계산기 (포인터) (0) | 2023.04.23 |
[7주차] 포인터 배열을 이용한 합산 구하기 (함수) (0) | 2023.04.23 |
[7주차] SWAP number 4 (2) | 2023.04.23 |