公约数也叫公因数。它是一个能被若干个整数同时均整除的整数。
而最大公约数是指两个或两个以上的整数最大的能够同时整除的整数。
求解方法有两种,一种叫质因数法,一种叫辗转相除法,也叫欧几里得算法。
在这里使用的方法是欧几里得算法:
使用的两个整数分别是41,18;
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int x = 41;
int y = 18;
int a = x, b = y;
while (1)
{
//当a大于等于b的时候,进行取余判断,b是否为a和b的最大公约数,
//是就打印,不是就再次取余,循环判断
if (a >= b)
{
if (a % b == 0)
{
printf("%d和%d的最大公约数是:%d!\n", x, y, b);
break;
}
if (a % b != 0)
{
a = a % b;
continue;
}
}
//当a小于b的时候,进行取余判断,a是否为a和b的最大公约数,
//是就打印,不是就再次取余,循环判断
if (a < b)
{
if (b % a == 0)
{
printf("%d和%d的最大公约数是:%d!\n", x, y, a);
break;
}
if (b % a != 0)
{
b = b % a;
continue;
}
}
}
system("pause");
return 0;
}
实验结果: