Newsgroup: it.comp.lang.visual-basic
Titolo: [Lungo] Pi Greco

Vi inoltro un post di Giorgio Vecchi inviato a it.hobby.enigmi.
Qualcuno potrebbe tradurmi il codice in VB?
E giro anche la sua domanda:
Come fa a trovare 2400 cifre di PI Greco?
Ciao ciao
*frankyz
*****************************************************
[...copypaste...]
Il codice seguente (č scritto in C ed č piuttosto criptico, non so chi ne
sia l'autore) trova le prime 2400 cifre di Pi greco (l'output č in fondo al
messaggio):
#include <stdio.h>
int a=10000, b=0, c=8400; long d; int e=0, f[8401], g;
void main()
{
    for ( ; b-c ; )
        f[b++] = a / 5;
    for ( ; d = 0, g = c * 2; c -= 14, printf("%.4d", e + int(d/a)), e =
int(d % a))
        for (b = c; d += long(f[b]) * a, f[b] = int(d % --g), d /= g--, --b;
d *= b)
            ;
}
Qualcuno ha idea di come faccia?
Ciao :-)
Giorgio
3141592653589793238462643383279502884
1971693993751058209749445923078164062
8620899862803482534211706798214808651
3282306647093844609550582231725359408
1284811174502841027019385211055596446
2294895493038196442881097566593344612
8475648233786783165271201909145648566
9234603486104543266482133936072602491
4127372458700660631558817488152092096
2829254091715364367892590360011330530
5488204665213841469519415116094330572
7036575959195309218611738193261179310
5118548074462379962749567351885752724
8912279381830119491298336733624406566
4308602139494639522473719070217986094
3702770539217176293176752384674818467
6694051320005681271452635608277857713
4275778960917363717872146844090122495
3430146549585371050792279689258923542
0199561121290219608640344181598136297
7477130996051870721134999999837297804
9951059731732816096318595024459455346
9083026425223082533446850352619311881
7101000313783875288658753320838142061
7177669147303598253490428755468731159
5628638823537875937519577818577805321
7122680661300192787661119590921642019
8938095257201065485863278865936153381
8279682303019520353018529689957736225
9941389124972177528347913151557485724
2454150695950829533116861727855889075
0983817546374649393192550604009277016
7113900984882401285836160356370766010
4710181942955596198946767837449448255
3797747268471040475346462080466842590
6949129331367702898915210475216205696
6024058038150193511253382430035587640
2474964732639141992726042699227967823
5478163600934172164121992458631503028
6182974555706749838505494588586926995
6909272107975093029553211653449872027
5596023648066549911988183479775356636
9807426542527862551818417574672890977
7727938000816470600161452491921732172
1477235014144197356854816136115735255
2133475741849468438523323907394143334
5477624168625189835694855620992192221
8427255025425688767179049460165346680
4988627232791786085784383827967976681
4541009538837863609506800642251252051
1739298489608412848862694560424196528
5022210661186306744278622039194945047
1237137869609563643719172874677646575
7396241389086583264599581339047802759
0099465764078951269468398352595709825
8226205224894077267194782684826014769
9090264013639443745530506820349625245
1749399651431429809190659250937221696
4615157098583874105978859597729754989
3016175392846813826868386894277415599
1855925245953959431049972524680845987
2736446958486538367362226260991246080
5124388439045124413654976278079771569
1435997700129616089441694868555848406
35342207222582848864815845602850
[...endcopypaste...]

Qualcuno potrebbe tradurmi il codice in VB?
[cut]
L'argomento č interessante, forse un po' OT, cmq. ...
dovrebbe essere piů o meno cosě ...
Private Sub Test()
    Dim a As Long: Dim b As Long
    Dim c As Long: Dim d As Long
    Dim e As Long: Dim f(8401) As Long
    Dim g As Long: Dim l As Long
    Dim x As String
    Dim out As String
 
    a = 10000: c = 8400
 
    While (b <> c)
        f(b) = a \ 5
        b = b + 1
    Wend
 
    While (c > 0)
        g = 2 * c
        d = 0
        b = c
        While (b > 0)
            d = d + f(b) * a
            g = g - 1
            f(b) = d Mod g
            d = d \ g
            g = g - 1
            b = b - 1
            If (b <> 0) Then d = d * b
        Wend
 
        c = c - 14
        x = Str$(e + d \ a)
        l = Len(x)
        out = out + Left$("0000", 5 - l) + Right$(x, l - 1)
        e = d Mod a
    Wend
 
    Debug.Print out
End Sub
non ho tradotto il codice C che hai postato ma ho preso spunto dal
primo di questi link ...
http://520033572202-0001.bei.t-online.de/Pispigot.htm
http://numbers.computation.free.fr/Constants/TinyPrograms/tinycodes.html
http://membres.lycos.fr/freyssin/div/pi.html
http://wiki.tcl.tk/8401
http://www.google.it/search?q=cache:5L72-Q96K3QJ:web.comlab.ox.ac.uk/oucl/work/jeremy.gibbons/publications/spigot.pdf+spigot+algorithm+&hl=it
http://www1.physik.tu-muenchen.de/~gammel/matpack/html/Mathematics/Pi.html
Ciao!