辗转相除法,请读者自行百度了解,我自己讲的可能不太全面,我这里附上一张百度百科的辗转相除法介绍。
整个代码思路就是,让用户输入两个数字。程序会在控制台输出它们的最大公因数。
#define _CRT_SECURE_NO_WARNINGS 1
//求两个数的最大公约数GCD(greatest common divisor)
#include<stdio.h>
void _GCD(int n,int m)
{
int result = 0;
//将输入的两个数调整为m>n
if (n > m)
{
int temp = n;
n = m;
m = temp;
}
while(m*n!=0)//只要输入两个不为零的数字,最后一定会走break语句
{
int re = m % n;
if (re == 0)
{
printf("最大公约数为:%d\n", n);
break;
}
else//n>re,除数大于余数一定成立。所以将n的值给m,re的值给n。保证m>n
{
m = n;
n = re;
}
}
if (n == 1)
{
printf("即两个数互质!");
}
}
int main()
{
int m = 0;
int n = 0;
printf("输入两个数以求他们的最大公约数:");
scanf("%d%d", &n, &m);
_GCD(m,n);
return 0;
}
一下展示两端运行结果: