このコードでは、すべての数値に対して1の結果が得られますが、理由はわかりません。 PHI(n)は、このコードで任意のnのは、あなたが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