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