Cuestiones intermedias en cirugía plástica

int gy(int*, int, int *); la función de divisor común devuelve todos los divisores comunes. No tengo un valor máximo para conectar porque es muy difícil de conseguir. Tienes que agregar un valor máximo para insertar. (Tomé la captura de pantalla y la ejecuté durante más de 100 segundos para obtener un conjunto de números aleatorios con divisores comunes)

int gb(int*, int); devuelve el mínimo común múltiplo. demasiado tiempo. Tenga paciencia para ejecutar el programa en todas partes.

Porque estoy constantemente haciendo un bucle +1 -1 para encontrar la convención de múltiplos comunes. La teoría se puede encontrar, pero es muy lenta. Si no está satisfecho, sólo puede ver si otros expertos pueden proporcionar mejores algoritmos.

Como se muestra en la imagen, solo ejecuté el denominador común. Si no desea que se ejecute automáticamente en el bucle, simplemente comente las dos declaraciones goto.

#incluye & ltstdio.h & gt

#incluye & ltstdlib.h & gt

#incluye & lttime.h & gt

#¿Definición? número de tamaño? ¿Cinco

int? gy(int*,int,int?*);

int? gb(int*, int);

int? principal()

{

int? a[numsize], I, *p, mgy[10], mgb=0, *gyp, size

p = a;

gyp = mgy

aa:? srand(tiempo(NULL));

for(I = 0;i<5;i++)

a[I]=(int)rand();

Printf("Generar número aleatorio:\ n ");

for(I = 0;i<numsizei++)

{

printf(" %d\n ", a[I]);

}

tamaño=gy(p, numsize, gyp);

if (tamaño == 0)

{

Printf("Sin denominador común\ n ");

¿ir a? aa;

}

Otros

{

Printf("El máximo común divisor es:");

for(I = 0;i<size;i++)

printf("%d?",mgy[I]);

}

bb: ? for(I = 0;i<5;i++)

a[I]=(int)rand();

Printf("Generar número aleatorio:\ n "); p>

for(I = 0;i<numsizei++)

{

printf("%d\n ",a[I]);

}

mgb=gb(p,numsize);

if (mgb==0)

{

Printf("No múltiplo común\ n ");

ir a? bb;

}

Otros

{

Printf("El mínimo común múltiplo es: %d\n ",mgb) ;

}

}

int? gy(int?*p, int?tamaño,int?*sp)

{

int? min=p[0],I,flog,count=0;

for(I=1;i<size;i++)

{

si(p [I]<mínimo)

{

min = p[I];

}

}

mientras(min>1)

{

flog = 1;

for(I = 0; i< tamaño ;i++)

{

if(p[i]%min!=0)

{

flog = 0;

Romper;

}

}

if(flog==1)

{

* sp = min

sp++;

cuenta++;

}

min-;

}

¿Devolver? Contar;

}

int? gb(int?*p, int? tamaño)

{

int? max=p[0],I,flog,mgb=0;

for(I=1;i<size;i++)

{

si(p [I]& gt;max)

{

max = p[I];

}

}

mientras(1)

{

flog = 1;

for(I = 0; i<size;i++)

{

Si (max?%?p[i]!=0)

{

flog = 0;

Romper;

}

}

if(flog==1)

{

mgb = max

Romper;

}

max++;

}

¿Regresar? mgb

}