ย้อนรอย ตอน หารร่วมมาก

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

มีหลายชื่อเผื่อว่าใครยังจำไม่ได้

  • หารร่วมมาก
  • หรม
  • Greatest Common Divisor
  • GCD

ผมขอบอกไว้แค่นี้พอ คนที่จำไม่ได้จริงๆ จะได้รู้สึกว่ามันน่าค้นหา ความหลังวันวาน

>>>print gcd(100,28)
4

งง งง
คือไรอ่ะ? ให้เขียน function หาตัวหารร่วมมากเหรอ??

sugree's picture

เอ่อ ใช่แล้วครับ ผมพลาดเอง

>>>print gcd(100,28)
4

ใน haskell, function gcd มีมาให้พร้อมใน standard library เลย
ลองดูวิธี implement ของมัน

gcd            :: Integral a => a -> a -> a
gcd 0 0         = error "Prelude.gcd: gcd 0 0 is undefined"
gcd x y         = gcd' (abs x) (abs y)
      where gcd' x 0 = x
      gcd' x y = gcd' y (x `rem` y)

ใช้ tail-recursive

ลองไล่ดู method gcd ของ ruby
ก็พบว่ามันมีประเด็นน่าสนใจ
ก็เลยไปเขียนใน blog แทน
http://pphetra.blogspot.com/2007/03/ruby-gcd.html

ตอนผมเรียนผมเรียก HCF Highest Common Factor
ไว้กันงงน่ะครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น