Go 언어에는 while 반복문이 없으므로 for 반복문을 (while 반복문 처럼) 쓰면 된다.
소스 파일명: testWhile.go
- // Filename: testWhile.go
- //
- // Execute: go run testWhile.go 625 1000
- // or
- // Compile: go build testWhile.go
- // Execute: ./testWhile 625 1000
- package main
- import (
- "fmt"
- "os"
- "strconv"
- )
- // 사용법 표시 함수
- func printUsing() {
- fmt.Printf("Using: testWhile [integer1] [integer2]\n");
- fmt.Printf("This finds the greatest common divisor of the given two integers.\n");
- }
- // main 함수
- func main() {
- var val1 int64
- var val2 int64
- var a int64
- var b int64
- var gcd int64
- if len(os.Args) != 3 {
- printUsing();
- return
- }
- // 명령행 인자의 스트링을 가져와서
- // 64비트 정수로 변환하여
- // 변수 val1과 val2에 저장한다.
- val1, _ = strconv.ParseInt(os.Args[1], 10, 64);
- val2, _ = strconv.ParseInt(os.Args[2], 10, 64);
- a = val1
- if a < 0 {
- a = -a
- }
- b = val2;
- if b < 0 {
- b = -b
- }
- if a < b {
- a, b = b, a
- }
- if b == 0 {
- fmt.Printf("GCD(%d, %d) = %d\n", val1, val2, a);
- return
- }
- // -------------------------------------------
- // Euclidean 알고리즘의 시작
- // * Go 언어에는 while 반복문이 없으므로 for 문을 사용한다.
- for a != 0 {
- b, a = a, b % a
- }
- // 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
- gcd = b
- // 최대공약수(GCD)를 출력한다.
- fmt.Printf("GCD(%d, %d) = %d\n", val1, val2, gcd);
- }
실행:
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
'프로그래밍 > Go' 카테고리의 다른 글
조립제법(Horner의 방법) 예제 with Go (0) | 2012.06.16 |
---|---|
80컬럼 컨솔에 19단표 출력하기 예제 with Go (0) | 2012.06.16 |
if...else... 조건문 사용 예제 with Go (0) | 2012.06.15 |
맹령행 인자 처리 예제 with Go (0) | 2012.06.15 |
HelloWorld 예제 with Go 언어 (0) | 2012.06.15 |