Andere Tipps

// Spigot program for pi to NDIGITS decimals.
// 4 digits per loop.
// Thanks to Dik T. Winter and Achim Flammenkamp who originally made a compressed version of this. 

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

#define NDIGITS 15536          //max digits to compute
#define LEN (NDIGITS/4+1)*14   //nec. array length

long a[LEN];                   //array of 4-digit-decimals
long b;                        //nominator prev. base
long c = LEN;                  //index
long d;                        //accumulator and carry
long e = 0;                    //save previous 4 digits
long f = 10000;                //new base, 4 decimal digits
long g;                        //denom previous base
long h = 0;                    //init switch

int main(void) {
        for(; (b=c-=14) > 0 ;){    //outer loop: 4 digits per loop
                for(; --b > 0 ;){      //inner loop: radix conv
                        d *= b;            //acc *= nom prev base
                        if( h == 0 )
                                d += 2000*f;   //first outer loop
                        else
                                d += a[b]*f;   //non-first outer loop
                        g=b+b-1;           //denom prev base
                        a[b] = d % g;
                        d /= g;            //save carry
                }
                h = printf("%d",e+d/f);//print prev 4 digits
                d = e = d % f;         //save currently 4 digits
                                       //assure a small enough d
        }
        getchar();
        return 0;
}

Ich sehe einen Unterschied in den o / p Ziffern des oben Zapfen pi Programms, wenn es mit http://www.numberworld.org/misc_runs/pi-10t/details.html

richtiger Wert von 50 Stellen von Pi: http://www.numberworld.org/misc_runs/pi-10t/details.html

3.

1415926535 8979323846 2643383279 5028841971 6939937510

Vor Zapfen pi:

3.

1415926535 8979323846 2643383279 5 ** (0) ** 28841971 6939937510

                                     ^^^ zero missing

geändert, um die 4 Stellen pro Schleife zu 8 Stellen durch Modifizieren lang f = 100000000;

das richtige Ergebnis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top