이 코드는 모든 숫자에 대해 1의 결과를 제공하며 이유를 알지 못합니다. 당신은 GCD에 NUM1과 num2를 전달하지만, 그들과 함께 아무것도하지 않을 1.공통 분모를 계산하는 중 오류가 발생했습니다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer
n = CStr(TextBox1.Text)
Dim phi As Integer
Dim i As Integer
phi = 1
For i = 1 To n
If (gcd(i, n) = 1) Then
phi = phi + 1
End If
Next
Label3.Text = phi
End Sub
Private Function gcd(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
Dim a As Integer
Dim b As Integer
Dim reminder As Integer
Dim temp As Long
If (b > a) Then
temp = a
a = b
b = temp
End If
Do While (b <> 0)
reminder = a Mod b
a = b
b = reminder
Loop
End Function
나는 VB 전문가가 아니지만 'gcd'는 무엇을 반환합니까? – thejh
gcd 함수는 매개 변수에 액세스하지 않습니다. gcd의 do 루프는 b가 항상 0이기 때문에 즉시 종료됩니다. gcd를 호출하는 for 루프는 gcd가 항상 0을 반환하기 때문에 phi를 수정하지 않습니다. – snarf