최대공약수와 최소공배수 성공출처
시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초 | 128 MB | 41906 | 24805 | 20224 | 61.600% |
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
예제 입력 1 복사
24 18
예제 출력 1 복사
6 72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.*
fun gcd(i:Int,k:Int):Int{
if(k%i==0) {
return i
}
return gcd(k%i,i)
}
fun main()=with(Scanner(System.`in`)){
//val (a, b) = readLine()!!.split(" ").map { it.toInt() } /* a,b에 입력숫자를 대입하는 코드. */ var a = nextInt()
var b = nextInt()
var temp = 0
var ggcd = 0
if(a>=b){
temp=b
b=a
a=temp
}
if(a==0 || b==0) //divide 0 runtime error때문에 넣었음.
{
println(0)
println(0)
}
else {
ggcd = gcd(a, b)
println(ggcd)
println(a * b / ggcd)
}
}
|
cs |
최대공약수 알고리즘
12와30이 있을때 30 % 12 = 6 과 12 & 30 중 작은수인 12가 선택
6,12로 다시 진행 12 % 6 = 0 ( 0 이될때 작은 값이 최대공약수) ( 유클리드 호제법)
최소공배수
a*b/최대공약수 = 최소공배수
'알고리즘 공부 > 미분류' 카테고리의 다른 글
백준 4344번 with Kotlin #5 100 70 60 30 20 10 꼴의 입력 # drop #avg # sum #소수점 몇째자리까지 출력 (0) | 2021.07.06 |
---|---|
백준 2581번 #소수 (0) | 2021.07.06 |
백준 2693번 with Kotlin #sort() 메소드는 MutableList로 변환하고 사용 (0) | 2021.07.05 |
백준 11719번 with Kotlin (0) | 2021.07.05 |
백준 2750번 with Kotlin #정렬 메소드 (0) | 2021.07.05 |