λ¬Έμ
λ κ°μ μμ°μλ₯Ό μ λ ₯λ°μ μ΅λ 곡μ½μμ μ΅μ 곡배μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ λ κ°μ μμ°μκ° μ£Όμ΄μ§λ€. μ΄ λμ 10,000μ΄νμ μμ°μμ΄λ©° μ¬μ΄μ ν μΉΈμ κ³΅λ°±μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μλ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ μμ μ΅λ곡μ½μλ₯Ό,λμ§Έ μ€μλ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ μμ μ΅μ 곡배μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯
24 18 |
μμ μΆλ ₯
6 72 |
λ¬Έμ νμ΄
μ²μμ λ¨μν νλμ μ½μλ₯Ό ꡬν΄μ μ΅λ 곡μ½μλ₯Ό ꡬνλ λ°©λ²μΌλ‘ μ κ°νλ€. νμ§λ§ μΈν°λ·μ μ°Ύμ보λ μ ν΄λ¦¬λ νΈμ λ²μ΄λΌλ κ²μ μμ λΌ μ μμλ€.
μ ν΄λ¦¬λ νΈμ λ²(- δΊι€ζ³, Euclidean algorithm)μ 2κ°μ μμ°μ λλ μ μ(ζ΄εΌ)μ μ΅λ곡μ½μλ₯Ό ꡬνλ μκ³ λ¦¬μ¦μ νλμ΄λ€. νΈμ λ²μ΄λ λ§μ λ μκ° μλ‘(δΊ) μλλ°© μλ₯Ό λλμ΄(ι€)μ κ²°κ΅ μνλ μλ₯Ό μ»λ μκ³ λ¦¬μ¦μ λνλΈλ€. 2κ°μ μμ°μ(λλ μ μ) a, bμ λν΄μ aλ₯Ό bλ‘ λλ λλ¨Έμ§λ₯Ό rμ΄λΌ νλ©΄(λ¨, a>b), aμ bμ μ΅λ곡μ½μλ bμ rμ μ΅λ곡μ½μμ κ°λ€. μ΄ μ±μ§μ λ°λΌ, bλ₯Ό rλ‘ λλ λλ¨Έμ§ r'λ₯Ό ꡬνκ³ , λ€μ rμ r'λ‘ λλ λλ¨Έμ§λ₯Ό ꡬνλ κ³Όμ μ λ°λ³΅νμ¬ λλ¨Έμ§κ° 0μ΄ λμμ λ λλλ μκ° aμ bμ μ΅λ곡μ½μμ΄λ€. μ΄λ λͺ μμ μΌλ‘ κΈ°μ λ κ°μ₯ μ€λλ μκ³ λ¦¬μ¦μΌλ‘μλ μλ €μ Έ μμΌλ©°, κΈ°μμ 300λ κ²½μ μ°μΈ μ ν΄λ¦¬λμ γμλ‘ γ μ 7κΆ, λͺ μ 1λΆν° 3κΉμ§μ ν΄λΉνλ€.
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
1071κ³Ό 1029μ μ΅λ곡μ½μλ₯Ό ꡬνλ©΄,
λ°λΌμ, μ΅λ곡μ½μλ 21μ΄λ€. 78696κ³Ό 19332μ μ΅λ곡μ½μλ₯Ό ꡬνλ©΄, 78696 οΌ 19332×4 οΌ 1368 λ°λΌμ, μ΅λ곡μ½μλ 36μ΄λ€. |
μμ μμμ²λΌ aμ bλ₯Ό λλ μ κ·Έ λλ¨Έμ§λ₯Ό ꡬνκ³ , bμ κ·Έ λλ¨Έμ§(r)λ₯Ό λλκ³ λμ¨ r'μ rκ³Ό λ€μ λλλ€. μ΄ κ³Όμ μ λλ¨Έμ§κ° 0μΌ λκΉμ§ λ°λ³΅νλ©΄, κ·Έ μκ° aμ bμ μ΅λ곡μ½μμ΄λ€.
μ΅λ곡배μλ aμ bλ₯Ό κ³±ν κ°μ μ΅λ곡μ½μλ‘ λλλ©΄ λλ€.
λ€μ μ½λλ λκ°μ§ λ°©μμΌλ‘ μ΄ λ¬Έμ λ₯Ό νΌ κ²μ΄λ€.
/* μ΅λ곡μ½μμ μ΅μ곡배μ */
/* 2019-08-19 μ΅λ곡μ½μμ μ΅μ곡배μ */
#include <iostream>
#include <vector>
using namespace std;
int g_d=1;
/*
int main() {
int a, b;
int g_d = 0;
vector <int> a_list, b_list;
cin >> a >> b;
for (int i = 1; i <= a; i++) {
if (a%i == 0) a_list.push_back(i);
}
for (int i = b; i >= 1; i--) {
if (b%i == 0 && g_d==0) {
for (int j = a_list.size()-1; j >= 0; j--) {
if (i == a_list[j]) {
g_d = i;
break;
}
}
}
}
cout << g_d << endl << (a*b) / g_d << endl;
}*/
void gcd(int a, int b) {
int tmp = a % b;
if (tmp == 0) g_d = b;
else {
gcd(b, tmp);
}
}
int main() {
int a, b;
cin >> a >> b;
if (a > b) gcd(a, b);
else gcd(b, a);
cout << g_d << endl;
cout << a * b / g_d;
}