1/1+1/2+1/3...+1/n kürzer schreiben
Verfasst: 13.08.2014 14:29
Ist es möglich in PB möglich 1/1+1/2+1/3+...+1/n kürzer zu schreiben?
Vielen dank
Vielen dank
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Define sum.f ;Ergebnis der Summe
Define N.i = 99
Define i.i ;Summenindex
For i=1 to N
sum + (1/i)
Next
Debug sumCode: Alles auswählen
#EulerMascheroni = 0.5772156649015328607
Procedure.d HarmonicNumber(Value.d)
Protected I.i, Result.d
If Value < 50 And Mod(Value, 1) = 0
For I = 1 To Value
Result + 1/I
Next
ProcedureReturn Result
ElseIf Value < 200
ProcedureReturn #EulerMascheroni + Log(Value) + 1/(2*Value) - 1/(12*Value*Value) + 1/(120*Value*Value*Value*Value) - 1/(252*Pow(Value,6)) + 1/(240*Pow(Value,8))
ElseIf Value < 3100
ProcedureReturn #EulerMascheroni + Log(Value) + 1/(2*Value) - 1/(12*Value*Value) + 1/(120*Value*Value*Value*Value) - 1/(252*Pow(Value,6))
ElseIf Value < 3e7
ProcedureReturn #EulerMascheroni + Log(Value) + 1/(2*Value) - 1/(12*Value*Value) + 1/(120*Value*Value*Value*Value)
Else
ProcedureReturn #EulerMascheroni + Log(Value) + 1/(2*Value) - 1/(12*Value*Value)
EndIf
EndProcedure
Debug HarmonicNumber(10)
Debug HarmonicNumber(100)
Debug HarmonicNumber(1000)
Debug HarmonicNumber(10000)
Debug HarmonicNumber(Pow(10,10))
Debug HarmonicNumber(Pow(10,100))Wahres Ergebnis:2.9289682539682538
5.1873775176396206
7.4854708605503442
9.7876060360443837
23.603066594891992
230.83572496430611
2.9289682539682539682539682539
5.18737751763962026080511767566
7.48547086055034491265651820433390018
9.787606036044382264178477904851605335
23.6030665948919897007855933035927
230.83572496430610126240565755852