โจทย์
ดูต้นฉบับ (ภาษาอังกฤษ)คืนค่าตัวหารร่วมมาก (gcd) ของ a และ b อัลกอริทึมของยูคลิดจะทำการแทนที่ (a, b) ด้วย (b, a mod b) ซ้ำไปเรื่อย ๆ จนกว่า b จะเป็น 0
ให้เขียนฟังก์ชัน gcd(a, b)
อินพุต
a: ตัวเลขตัวแรก b: ตัวเลขตัวที่สอง
เอาต์พุต
คืนค่า gcd(a, b) โดยที่ gcd(0, 0) ให้เป็น 0
เงื่อนไข
0 ≤ a, b ≤ 10¹⁸
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
a = 48
b = 18
ผลลัพธ์ที่คาดหวัง:
expected = 6
อินพุต:
long long a = 48;
long long b = 18;
ผลลัพธ์ที่คาดหวัง:
long long expected = 6;
อินพุต:
long a = 48;
long b = 18;
ผลลัพธ์ที่คาดหวัง:
long expected = 6;
คำอธิบาย
48 mod 18 = 12, 18 mod 12 = 6, 12 mod 6 = 0 ดังนั้นคำตอบคือ 6
ตัวอย่างที่ 2
อินพุต:
a = 17
b = 5
ผลลัพธ์ที่คาดหวัง:
expected = 1
อินพุต:
long long a = 17;
long long b = 5;
ผลลัพธ์ที่คาดหวัง:
long long expected = 1;
อินพุต:
long a = 17;
long b = 5;
ผลลัพธ์ที่คาดหวัง:
long expected = 1;
คำอธิบาย
17 กับ 5 ไม่มีตัวประกอบร่วมกันนอกจาก 1
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน