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
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 20