프로그래밍/Io

(최대공약수 구하기) while ... 반복문 예제 for Io

Scripter 2008. 4. 6. 23:14

아래의 소스 코드는 Groovy 용으로 작성돠었던 소스파일 testWhile.groovy를 Io용으로 고친 것이다.
* 소스에 한글이 포함된 경우 반드시 UTF-8 인코딩으로 저장해야 한다. 그렇지 않으면 에러기 난다.
* (Ubuntu에서는 OS 자체에서 UTF-8 인코딩을 기본으로 하고 있으므로, 한글 처리에 아무 문제가 없을 것이다.)


소스 파일명: testWhile.io

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



실행> io testWhile.io
Using: io testWhile.io [integer1] [integer2]
This finds the greatest common divisor of the given two integers.

실행> io testWhile.io -50, 200
GCD(-50, 200) = 50

실행> io testWhile.io 50, -30
GCD(50, -30) = 10

실행> io testWhile.io 0. 30
GCD(0, 30) = 30




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

'프로그래밍 > Io' 카테고리의 다른 글

조립제법(Horner의 방법) 예제 for Io  (0) 2008.04.07
80컬럼 컨솔에 19단표 출력하기 예제 for Io  (0) 2008.04.07
구구단 출력 예제 for Io  (0) 2008.04.06
if ... else ... 예제 for Io  (0) 2008.04.06
Hello 예제 for Io  (0) 2008.04.06