소스 파일명: testWhile.lua

  1. --[[
  2.   Filename: testWhile.lua
  3.   Purpose:  Example using the while loop syntax
  4.                 while ....
  5.   Execute: lua testWhile.lua -200 300
  6. --]]
  7. -- 사용법 표시
  8. function printUsage()
  9.     print "Using: lua testWhile.lua [integer1] [integer2]"
  10.     print "This finds the greatest common divisor of the given two integers."
  11. end
  12. if #arg ~= 2 then
  13.     printUsage()
  14.     os.exit(1)
  15. end
  16. -- 명령행 인자의 두 스트링을 가져와서
  17. -- 정수 타입으로 변환하여
  18. -- 변수 val1과 val2에 저장한다.
  19. val1 = tonumber(arg[1])
  20. val2 = tonumber(arg[2])
  21. -- a는 |val1|, |val2| 중 큰 값
  22. a = math.abs(val1)
  23. b = math.abs(val2)
  24. if a < b then
  25.     a = math.abs(val2)
  26.     b = math.abs(val1)
  27. end
  28. if b == 0 then
  29.     print( "GCD(" .. val1 .. ", " .. val2 .. ") = " .. a )
  30.     os.exit(0)
  31. end
  32. -- Euclidean 알고리즘의 시작
  33. --
  34. -- a를 b로 나누어 몫은 q에, 나머지는 r에 저장
  35. q = a / b
  36. r = a % b
  37. -- Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
  38. while r ~= 0 do
  39.     a = b
  40.     b = r
  41.     q = a / b
  42.     r = a % b
  43. end
  44. -- 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
  45. gcd = b
  46. -- 최대공약수(GCD)를 출력한다.
  47. print( "GCD(" .. val1 .. ", " .. val2 .. ") = " .. gcd )



실행:

Command> lua testWhile.lua
Using: lua testWhile.lua [integer1] [integer2]
This finds the greatest common divisor of the given two integers.

Command> lua testWhile.lua -200 0
GCD(-200, 0) = 200

Command> lua testWhile.lua -200 300
GCD(-200, 300) = 100

Command> lua testWhile.lua 21 81
GCD(21, 81) = 3

Command> lua testWhile.lua 23 25
GCD(23, 25) = 1




Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,