소스 파일명: testWhile.lua
- --[[
- Filename: testWhile.lua
- Purpose: Example using the while loop syntax
- while ....
- Execute: lua testWhile.lua -200 300
- --]]
- -- 사용법 표시
- function printUsage()
- print "Using: lua testWhile.lua [integer1] [integer2]"
- print "This finds the greatest common divisor of the given two integers."
- end
- if #arg ~= 2 then
- printUsage()
- os.exit(1)
- end
- -- 명령행 인자의 두 스트링을 가져와서
- -- 정수 타입으로 변환하여
- -- 변수 val1과 val2에 저장한다.
- val1 = tonumber(arg[1])
- val2 = tonumber(arg[2])
- -- a는 |val1|, |val2| 중 큰 값
- a = math.abs(val1)
- b = math.abs(val2)
- if a < b then
- a = math.abs(val2)
- b = math.abs(val1)
- end
- if b == 0 then
- print( "GCD(" .. val1 .. ", " .. val2 .. ") = " .. a )
- os.exit(0)
- end
- -- Euclidean 알고리즘의 시작
- --
- -- a를 b로 나누어 몫은 q에, 나머지는 r에 저장
- q = a / b
- r = a % b
- -- Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
- while r ~= 0 do
- a = b
- b = r
- q = a / b
- r = a % b
- end
- -- 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
- gcd = b
- -- 최대공약수(GCD)를 출력한다.
- 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
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Lua' 카테고리의 다른 글
조립제법(Horner의 방법) 예제 for Lua (0) | 2008.03.14 |
---|---|
80컬럼 컨솔에 19단표 출력하기 예제 for Lua (0) | 2008.03.03 |
if...else... 조건문 사용 예제 for Lua (0) | 2008.02.19 |
명령행 인자 처리 예제 for Lua (0) | 2008.02.19 |
구구단 출력 예제 for Lua (0) | 2008.02.13 |