A.A.Z. писал(а):
Вообще, П = 4*Atn(1)
Короче, Яндекс -> вычисление пи -> 2ая ссылка (http://program.rin.ru/razdel/html/711.html)
[edit]опять на минуту опоздал =)[/edit]
Private Sub Form_Load()
Dim sgns As Long
Const prec As Single = 0.00001 'òî÷íîñòü çàäà¸òñÿ â ôîðìàòå 1E-n,
'n - ÷èñëî çíàêîâ ïîñëå çàïÿòîé
Dim pi_ As Single 'ïè
Dim oldMemberN As Double '(n-1)-é ÷ëåí ðÿäà
Dim MemberN As Double 'n-é ÷ëåí ðÿäà
Dim n As Long 'n
Do
oldMemberN = MemberN
n = n + 1
MemberN = (-1) ^ n * 4 / (2 * n - 1)
pi_ = pi_ - MemberN
Loop While Abs(MemberN - oldMemberN) > prec
Me.Show
Me.Print "n: " & n
Me.Print "pi: " & Left$(CStr(pi_), Len(CStr(prec)))
End Sub
prec = 1 / (10^lngDigits)
A.A.Z. писал(а):...Вероятность того, что если мы выпишем наудачу два произвольных натуральных числа, то они окажутся взаимно простыми, равна (Теорема Чезаро)...
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Load()
Dim sgns As Long
Const lngDigits As Long = 6 'количество знаков
Dim prec As Single 'точность
Dim pi_ As Single 'пи
Dim oldMemberN As Single '(n-1)-й член ряда
Dim MemberN As Single 'n-й член ряда
Dim n As Long 'n
Dim time1 As Long
prec = 1 / (10 ^ lngDigits)
Me.Show
time1 = GetTickCount
Do
oldMemberN = MemberN
n = n + 1
MemberN = (-1) ^ n * 4 / (2 * n - 1)
pi_ = pi_ - MemberN
If n Mod 100000 = 1 Then
Me.Caption = "Итерация " & Format$(n, "### ### ### ### ###") & " - точность меньше заданной в " & Abs(MemberN - oldMemberN) / prec & " раз"
DoEvents
End If
Loop While Abs(MemberN - oldMemberN) > prec
Me.Print "Итераций: " & n
Me.Print "pi: " & Left$(CStr(pi_), Len(CStr(prec)))
Me.Print "Затраченное время: " & Round((GetTickCount - time1) / 1000, 1) & " секунд"
End Sub
i'm pissed писал(а):Amed, опять алгоритм глючит говорит переполнение бувера знаков ставил 10
Сейчас этот форум просматривают: AhrefsBot и гости: 65