Red de conocimiento informático - Problemas con los teléfonos móviles - Preguntas del examen de programación Vc

Preguntas del examen de programación Vc

/* * * * * * * *Descomposición. h * * * * * * * * * * */

# define is _ print _ factor 1//Define si se imprime el resultado intermedio.

Descomposición de categorías

{

Privado:

unsigned_ _ int64 * num

Unsigned_ _ int64 * suma

int n;

Público:

Descomponer();

Descomponer(int n, unsigned _ _ int 64 * num );

Virtual ~ descomposición ();

int primenu(unsigned _ _ int 64 x, unsigned _ _ int 64 * fac

void primenu); ();

void printSum();

};

El siguiente es el archivo cpp

////// /////////////////////////////////////////////////// //// /////////////////////////////

// Decompose.cpp: Implementación del descompuesto clase.

//

/////////////////////////////////// // ///////////////////////////////////////////////

#Contiene "decomposition.h"

#Incluye "stdio.h"

#Incluye "windows.h"

/// //////////// /////////////////////////////////////// //////////////// /////

//Construcción/Destrucción

////////// ///////////////// ///////////////////////////////// /////////////

Descomponer::descomponer()

{

num = NULL

suma = NULL

n = 0;

}

Descomponer: :decompose(int n, unsigned __int64 *num)

{

Esto - gt; n = n

Esto - gt; num = nuevo sin firmar _ _ int 64[n]

suma = nuevo sin firmar _ _ int 64[n];

for(int I = 0;iltn;i)

Esto - gt;Número[I]=Número[I];

}

Descomposición::~descomposición()

{

Si (num!=null)

Eliminar [] número;

Si (suma!=null)

p>

Eliminar []suma;

}

Sin firmar __int64 sqrt64 (unsigned __int64 x)

{

int I =(sizeof(unsigned _ _ int 64) lt; lt3)-1

if(x) ==(unsigned __int64)1)

return(unsigned __ int 64)1;

mientras(I gt;=0)

{

si ((x gt gti)==1)

romper;

I-;

}

return(unsigned _ _ int 64)1 lt((I 2) gt; gt1);

}

int Decompose::primenu(unsigned _ _ int 64 x, unsigned __int64 *fac)

{

unsigned __int64 i=2, sqrtx = sqrt 64(x);

int flen = 0;

while(iltsqrtx)

{

if(x I = = 0)//Si I es un factor de x

{

fac[flen]= I;

x /= I;

sqrtx = sqrt 64(x);

}

else if(I = = 2)i;

else I = 2; //Si x no es un número par, entonces el factor de x debe ser un número impar

}

fac[flen

]= x;

Devuelve flen// flen es el número de enteros en fac

}

descomposición nula: primeNum()

{

unsigned _ _ int 64 fac[64];

int i, j, flen

for(I = 0; i ltn; i )

{

flen=primeNum(num[i], fac);

#Si es _print_factor

printf ("I64u = ",num[I]);

for(j = 0;j ltflenj)

{

printf("I64u ",fac [j] );

if (j!=flen-1)

printf(" x ");

si no printf(" \ n ") ;

}

#endif

for(j=0, suma[I]= 0; j ltflenj )

suma[ I] = fac[j];

}

}

descomposición vacía:: printSum()

{

int I;

for(I = 0;iltn;i)

printf("suma(I64u)=I64u\n ",num[i],suma [I]) ;

}

void main()

{

LARGE_INTEGER t1, t2, frq

unsigned _ _ int 64 num[]= { 1234, 123456789, 1234567891011, 123456789165438

int i, n = sizeof(num)/sizeof(* num);

Descomposición d(n, num);

QueryPerformanceFrequency(amp;frq);

QueryPerformanceCounter(amp;t 1);

d.prime num();

QueryPerformanceCounter(&T2);

printf("\n");

d.printsum();

printf ("\ntime=f segundos\n ", (doble)(t2. Cuatro partes-t1. QuadPart)/frqquad parte);

}