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