最大公约数:
1.更相减损术
简介:
更相减损术是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。
#include<stdio.h>
//最小公约数
int minGongYueShu(int x, int y) {
while (x != y) {
if (x > y) {
x -= y;
}
else {
y -= x;
}
}
return x;
}
//最小公倍数
int minGongBeiShu(int x, int y) {
int mingys = minGongYueShu(x, y);
//最小公倍数等于两数之积➗最小公约数
return (x*y) / mingys;
}
int main() {
printf("%d\n", minGongYueShu(12, 8));
printf("%d", minGongBeiShu(12, 8));
return 0;
}
2.欧几里得算法
简介:
欧几里德算法是用来求两个正整数最大公约数的算法。是由古希腊数学家欧几里德在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里德算法。
代码实现:
#include<stdio.h>
int main() {
int arr[100] = { 0 };
//提示用户输入待求的两个数,并获取
printf("please input two digits\n");
int i = 1;
scanf_s("%d %d",&arr[0],&arr[1]);
do
{for (int i = 0; i < 100; i++)
{
arr[i + 2] = arr[i] % arr[i + 1];
if(arr[i+2]==0)
{
printf("%d\n", arr[i + 1]);
}
}
} while (arr[i+2]);
return 0;
}
结果:
补充:
数组的数据结构