Velky integer
Petr Kučera
pkucera na mh.vri.cz
Úterý Říjen 29 09:32:13 CET 2002
> On Mon, Oct 28, 2002 at 11:21:07AM +0100, Petr Kučera wrote:
> >
> > 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
#include <stdio.h>
long long cislo;
void primefactor(long long Cislo)
{
long long pom;
while(Cislo%2==0 & 4<abs(Cislo))
{
printf("2 ");
Cislo/=2;
}
pom=3;
while(pom*pom<abs(Cislo))
{
if(Cislo%pom==0)
{
printf("%Ld ", pom);
Cislo/=pom;
}
else
{
pom+=2;
}
}
printf("%Ld", Cislo);
}
main()
{
cislo=1;
while(cislo<2*cislo)
{
cislo*=2;
}
cislo*=2;
cislo-=1;
primefactor(cislo);
printf("\n%Ld\n", cislo);
}
---
Odchozí zpráva neobsahuje viry.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.408 / Virová báze: 230 - datum vydání: 24.10.2002
Další informace o konferenci Linux