Go 언어에는 while 반복문이 없으므로 for 반복문을 (while 반복문 처럼) 쓰면 된다.

 

소스 파일명: testWhile.go

  1. // Filename: testWhile.go
  2. //
  3. // Execute: go run testWhile.go 625 1000
  4. // or
  5. // Compile: go build testWhile.go
  6. // Execute: ./testWhile 625 1000
  7. package main
  8. import (
  9.     "fmt"
  10.     "os"
  11.     "strconv"
  12. )
  13. // 사용법 표시 함수
  14. func printUsing() {
  15.     fmt.Printf("Using: testWhile [integer1] [integer2]\n");
  16.     fmt.Printf("This finds the greatest common divisor of the given two integers.\n");
  17. }
  18. // main 함수
  19. func main() {
  20.     var val1 int64
  21.     var val2 int64
  22.     var a int64
  23.     var b int64
  24.     var gcd int64
  25.     if len(os.Args) != 3 {
  26.         printUsing();
  27.         return
  28.     }
  29.     // 명령행 인자의 스트링을 가져와서
  30.     // 64비트 정수로 변환하여
  31.     // 변수 val1과 val2에 저장한다.
  32.     val1, _ = strconv.ParseInt(os.Args[1], 10, 64);
  33.     val2, _ = strconv.ParseInt(os.Args[2], 10, 64);
  34.     a = val1
  35.     if a < 0 {
  36.         a = -a
  37.     }
  38.     b = val2;
  39.     if b < 0 {
  40.         b = -b
  41.     }
  42.     if a < b { 
  43.         a, b = b, a
  44.     }
  45.     if b == 0 {
  46.         fmt.Printf("GCD(%d, %d) = %d\n", val1, val2, a);
  47.         return
  48.     }
  49.     // -------------------------------------------
  50.     // Euclidean 알고리즘의 시작 
  51.     // *  Go 언어에는 while 반복문이 없으므로 for 문을 사용한다.
  52.     for a != 0 {
  53.         b, a = a, b % a
  54.     }
  55.     // 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
  56.     gcd = b
  57.     // 최대공약수(GCD)를 출력한다.
  58.     fmt.Printf("GCD(%d, %d) = %d\n", val1, val2, gcd);
  59. }


 



실행:

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

Command> go run testWhile 200 -300
GCD(200, -300) = 100

Command>go run  testWhile 0 -300
GCD(0, -300) = 300

Command> go run testWhile 20 -125
GCD(20, -125) = 5

Command> go run testWhile 121 66
GCD(121, 66) = 11

Command> testWhile -111 -37
GCD(-111, -37) = 37


컴파일:

Command> go build testWhile.go


실행:

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

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

Command> testWhile 0 -300
GCD(0, -300) = 300

Command> testWhile 20 -125
GCD(20, -125) = 5

Command> testWhile 121 66
GCD(121, 66) = 11

Command> testWhile -111 -37
GCD(-111, -37) = 37

 

Posted by Scripter
,