Registriert seit: 17. Nov 2005
Ort: Hamburg
1.063 Beiträge
Delphi XE2 Professional
|
AW: Rechenprogramm
27. Sep 2020, 11:01
Besten Dank!
Du könntest
x = e^ln(x) bzw. hier besser
x = 10^lg(x) und
log(ab)=log(a)+log(b)
ausnutzen.
Dann kannst du x! schreiben als x! = 10^lg(1*2*3...*x) = 10^(lg(1)+...lg(x)).
Fürs Coden: Du berechnest zuerst
s = lg(1)+...lg(x)
Sei s = e + m, wobei e = trunc(s) und m = frac(s)
x! = 10^s = 10^(e+m) = 10^m * 10^e.
Output:
10^m rechnest du aus, e lässt du als Exponent stehen.
Ich fühl mich gerade zurückversetzt in die Zeiten des hp41CV... .
Das wäre aber eine schöne Verschlimmbesserung.
Statt (für N=1000) hätte ich statt 1000 Multiplikationen 1000 mal Log10(), und Log10() braucht seine Zeit.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
|