Encontrar el máximo común divisor de dos números usando la división de lanzamiento y el pensamiento recursivo

Lanzar y dividir

El algoritmo euclidiano también se llama método de lanzar y dividir, que se utiliza para calcular el máximo común divisor de dos números enteros no negativos ay b. Hay dos áreas de aplicación: matemáticas e informática. La fórmula de cálculo mcd (a, b) => mcd (b, a mod b).


Introducción al algoritmo

El algoritmo de Euclides es un algoritmo que se utiliza para encontrar el máximo común divisor de dos números enteros positivos. (Se llama algoritmo euclidiano porque fue inventado por Euclid)
Extensión: el algoritmo euclidiano se puede utilizar en campos como el cifrado RSA.

Si necesita el máximo común divisor de los dos enteros positivos 1997 y 615, utilice el algoritmo de Euclides para proceder así:
1997/615 = 3 (152 restantes)
615/152 = 4 (7 restantes)
152/7 = 21 (Resto 5)
7/5 = 1 (Resto 2)
5/2 = 2 (Resto 1) 2/1
= 2 (Resto 0) Hasta
ahora, el máximo común divisor es 1.
Repita la operación de división con el divisor y el resto, cuando el resto es En 0, el divisor actual es el máximo común divisor, por lo que se obtiene el máximo común divisor 1 de 1997 y 615.


Caso de algoritmo

Caso tomado de PTA

Encuentra el máximo común divisor

Usa la división y recursión de tiros y vueltas para encontrar el máximo común divisor de dos enteros positivos my n.

Formato de entrada:
introduzca dos enteros positivos m, n.

Formato de
salida : envíe el proceso de división y los resultados finales según sea necesario, separados por espacios entre los resultados de salida.

Muestra de entrada:

21 35

Salida de muestra:

gcd(21,35) gcd(35,21) gcd(21,14) gcd(14,7) 7

Implementación del código del autor

#include <iostream>
using namespace std;

int gcd(int a,int b){
    
    
	cout<<"gcd("<<a<<","<<b<<")"<<" ";
	if(a<b){
    
    
		int temp;
		temp=a;
		a=b;
		b=temp;
		cout<<"gcd("<<a<<","<<b<<")"<<" ";
	}
	
	int s=a%b;
	if(s==0){
    
    
	cout<<b;
	return b;
	}else{
    
    
	gcd(b,s);
	}
}

int main(){
    
    
	int a,b;
	cin>>a;
	cin>>b;
	gcd(a,b);
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_38149225/article/details/109101717
Recomendado
Clasificación