Velky integer

David Ignjić dignjic na activit.sk
Úterý Říjen 29 10:30:22 CET 2002


chyba je vo volani abs vracia int aj parameter ma int.
ked sa da abs prec je to v poriadku.

No inac tu je podobny program pre akukolvek presnost v C++
Test napr
2 5 5 11 10193 5573428838983
31245478085664545450 co je vacsie ako
9223372036854775807
s pomocou kniznice co som posielal linku
http://www.swox.com/gmp/ - GMP is a free library for arbitrary precision
arithmetic, operating on signed integers, rational numbers, and floating
point numbers
ja vyuzivam C++ lebo v tom to rychlejsie nakodujem inac je to c-ova
kniznica.

David

#include <gmpxx.h>

mpz_class cislo;
void primefactor()
{

        mpz_class Cislo = cislo;
        mpz_class pom;

        while(Cislo % 2 == 0 & 4 < Cislo)
        {
                cout << "2 ";
                Cislo/=2;
        }
        pom=3;
        while(pom*pom<Cislo)
        {
                if(Cislo%pom==0)
                {
                        cout << pom << " ";
                        Cislo/=pom;
                }
                else
                {
                        pom+=2;
                }
        }
        cout << Cislo;
}

main()
{
/*      cislo=1;
        while(cislo<2*cislo)
        {
                cislo*=2;
        }
        cislo*=2;
        cislo-=1;
*/
        cin >> cislo;
        cout << cislo << endl;
        primefactor();
        cout << endl << cislo << endl;
}




> > >
> > > prosim Vas, potreboval bych pracovat s velkymi prirozenymi
> > > cisly, radove tak desetimiliony a vice. Nevite nahodou o nejake C
> > > knihovne, ktera by to umoznovala? 32-bitovy long mi nestaci. Ja
> takto
> > > velika cisla chci mezi sebou nasobit.
> >
> > GCC umí pracovat s typem 'long long', který je na ix86 64-bitový.
>
> Zkousel jsem napsat nize prilozeny programek s typem long long, který by
> mel vypsat rozklad na prvocisla maximalniho cisla typu long long, coz je
> cislo 9223372036854775807. Mel by tedy vypsat posloupnost cisel: 7 7 73
> 127 337 92737 649657. Ale vypise pouze 9223372036854775807. U mensich
> cisel to funguje bez problemu. Proc ne i u těchto. Zkousel jsem i o něco
> malo mensi cisla, ale se stejnym vysledkem.
>
> Dekuji za jakoukoliv radu i pripadne vysvetleni divneho chovani
> tohoto programku.
>
> PK



Další informace o konferenci Linux