求最大公约数:
辗转相除法:
假如说我要知道24 和 18的最大公约数(就是24的所有公因数和18的所有公因数中相最大的相等的公因数)
而辗转相除法就是: 24 % 18 余6,然后18 % 6余零,那么6就是24和18的最大公约数,最重要的是18 % 6余零,因为18是24和18中最小的数。
以下就是求最大公约数的c代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
求解两个数的最大公约数
使用辗转相除法
*/
int main()
{
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d %d", &a, &b);
//求最大公约数
while (c = a % b)
{
a = b;
b = c;
}
printf("两个数的最大公约数为:%d\n", b);
return 0;
}
求最大公倍数的方法:
接着上面求最大公约数的代码求最大公倍数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
求解两个数的最小公倍数,首先求出最小公约数
使用辗转相除法
*/
int main()
{
//存储两个输入的值
int one = 0;
int two = 0;
//输入
printf("请输入两个数:>");
scanf("%d %d", &one, &two);
//求数的临时变量
int a = one;
int b = two;
int c = 0;
//求最大公约数
while (c = a % b)
{
a = b;
b = c;
}
//求最小公倍数
b = (one * two) / b;
printf("两个数的最小公倍数为:%d\n", b);
return 0;
}
以上就是用辗转相除法求最大公约数和最小公倍数的代码。