第一种:用较小数的最大约数于较大数作求模元算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include<stdio.h>
/*
求两个数的最大公约数
*/
int
main(){
int
a,b,max,min,i,result;
scanf
(
"%d,%d"
,&a,&b);
printf
(
"您输入的的值分别为%d,%d\n"
,a,b);
if
(a>b){
max=a;
min=b;
}
else
if
(a == b){
result=a;
goto
out;
}
else
{
max=b;
min=a;
}
for
(i=min;i>0;i--){
if
((min%i) == 0){
if
((max%i) == 0){
result = i;
goto
out;
}
}
}
out:
printf
(
"最大公约数为:%d\n"
,result);
return
0;
}
|
第二种:古老的数学算法--辗转想除法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include<stdio.h>
/*
求两个数的最大公约数
使用辗转相除法
*/
int
main(){
int
a,b,max,min,i,result;
scanf
(
"%d,%d"
,&a,&b);
printf
(
"您输入的的值分别为%d,%d\n"
,a,b);
if
(a>b){
max=a;
min=b;
}
else
if
(a == b){
result=a;
goto
out;
}
else
{
max=b;
min=a;
}
while
(min != 0 ){
i=max%min;
printf
(
"%d,%d,%d\n"
,max,min,i);
max=min;
min=i;
}
out:
printf
(
"最大公约数为:%d\n"
,max);
return
0;
}
|
本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/1919946,如需转载请自行联系原作者