'
' Purpose: Example using the while loop syntax
' while ....
'
' Compile: vbc TestWhileLoop.bas
' Execute: TestWhileLoop -200 300
Imports System
Namespace MyTestApplication1
Class TestWhileLoop
' 사용법 표시
Shared Sub PrintUsage()
Console.WriteLine("Using: TestWhileLoop [integer1] [integer2]")
Console.WriteLine("This finds the greatest common divisor of the given two integers.")
End Sub
' Java 언어의 main 메소드에 해당하는 Visual Basic의 Main
Shared Sub Main(ByVal args() As String)
If args.Length <> 2 Then
PrintUsage()
Environment.Exit(1)
End If
' ---------------------------------------------
' 명령행 인자의 두 스트링을 가져와서
' 긴정수(Long) 즉 Int64 타입으로 변환하여
' 변수 val1과 val2에 저장한다.
Dim val1 As Int64 = Convert.ToInt64(args(0))
Dim val2 As Int64 = Convert.ToInt64(args(1))
Dim a As Int64
Dim b As Int64
Dim q As Int64 ' q는 몫
Dim r As Int64 ' r은 나머지
Dim gcd As Int64
' 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
If b = 0 Then
Console.WriteLine("GCD(" & val1 & ", " & val2 & ") = " & a)
Environment.Exit(1)
End If
' ------------------------------------
' Euclidean 알고리즘의 시작
'
' a를 b로 나누어 몫은 q에, 나머지는 r에 저장
q = Int(a / b)
r = a Mod b
' --------------------------------------------------------
' Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
While r <> 0L
a = b
b = r
q = Int(a / b)
r = a Mod b
End While
' 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
gcd = b
' 최대공약수(GCD)를 출력한다.
Console.WriteLine("GCD(" & val1 & ", " & val2 & ") = " & gcd)
End Sub
End Class
End Namespace
컴파일> vbc -d . TestWhileLoop.bas
실행> TestWhileLoop
Using: TestWhileLoop [integer1] [integer2]
This finds the greatest common divisor of the given two integers.
실행> TestWhileLoop 200 300
GCD(200, 300) = 100
실행> TestWhileLoop 50 -20
GCD(50, -20) = 10
실행> TestWhileLoop -30 0
GCD(-30, 0) = 30
'프로그래밍 > BASIC' 카테고리의 다른 글
문자열 거꾸로 하기 with Visual Basic (0) | 2009.02.14 |
---|---|
현재 시각 알아내기 for Visual Basic (0) | 2009.02.14 |
80컬럼 컨솔에 19단표 출력하기 예제 for Visual Basic (0) | 2009.02.13 |
명령행 인자 처리 예제 for Visual Basic (0) | 2009.02.13 |
조립제법(Horner의 방법) 예제 for Visual Basic (0) | 2009.02.13 |