C语言求两个数最大公约数
 
步骤:
	1.使用scanf输入两个数
	2.求出两个数的所有公约数,并存储在数组中
	3.求出两个数组中所有相同的值,并存储在数组中
	4.计算出数组的最大值,就是两个数的最大公约数
 
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int* getNum(int n);					
int* getSame(int arr[], int brr[]);	
int getMax(int arr[]);				
int test_0()
{
	
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d %d\n", a, b);
	
	int* arr = getNum(a);
	int* brr = getNum(b);
	
	int* all = getSame(arr, brr);
	
	int max = getMax(all);
	printf("%d", max); 
	
	free(arr);
	free(brr);
	free(all);
	return 0;
}
int* getNum(int n)
{
	int* arr = (int*)malloc(20 * sizeof(int));
	arr[0] = 0;
	for (int i = 1; i < sqrt(n); i++)
	{
		if (n % i == 0)
		{
			arr[arr[0] + 1] = i;
			arr[arr[0] + 2] = n / i;
			arr[0] += 2;
		}
	}
	return arr;
}
int getMax(int arr[])
{
	int max = arr[1];
	for (int i = 2; i <= arr[0]; i++)
	{
		if (max < arr[i])
		{
			max = arr[i];
		}
	}
	return max;
}
int* getSame(int arr[], int brr[])
{
	int* all = (int*)malloc(10 * sizeof(int));
	all[0] = 0;
	for (int i = 1; i <= arr[0]; i++)
	{
		for (int j = 1; j <= brr[0]; j++)
		{
			if (arr[i] == brr[j])
			{
				all[0] += 1;
				all[all[0]] = arr[i];
			}
		}
	}
	return all;
}