#define_CRT_SECURE_NO_WARNINGS#includecintmain(){//穷举法int a =0;int b =0;scanf("%d %d",&a,&b);int n = a > b ? b : a;//获取最小值while(a % n !=0|| b % n !=0)//作为判断条件{
n--;}printf("%d",n);return0;}
例如 a = 24 b = 16 a % b = 8 此时a = 8,b = 16, 再次循环 b % a == 0 ,那么就证明a为最大公因数。需要注意的是 必须是大的数取余小的数 就需要进行判断。
总代码
#define_CRT_SECURE_NO_WARNINGS#includeintmain(){int a =0;int b =0;scanf("%d %d",&a,&b);while(a && b){if(a > b){
a %= b;}else{
b %= a;}}printf("%d",a > b ? a : b);return0;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
三、更相相损法
思路:两数通过不断相损(相减),当两者相等时,就是最大公因数。
例如 a = 24 b = 16,通过条件判断使 a -= b,那么此时a = 8 ,b = 16,再次进行条件判断 从而使 a = b,获得最大公因数。
总代码
#define_CRT_SECURE_NO_WARNINGS#includeintmain(){int a =0;int b =0;scanf("%d %d",&a,&b);while(a != b){if(a > b){
a -= b;}else{
b -= a;}}printf("%d",a);return0;}