输入两个数n,m。求这两个数的最大公约数。
下面给出两种方法。
1.这种方法比较适用于新手。
#include<stdio.h>
int mai()
{
int a,b;
int min;
scanf("%d %d", &a, &b);
if ( a<b ){
min = a;
} else{
min = b;
}
int ret = 0;
int i;
for ( i = 1; i < min; i++) {
if ( a%i ==0 && b%i ==0 ){
ret = i;
}
}
printf("%d和%d的最大公约数是%d", a, b, ret);
return 0;
}
2.第二种方法用的是辗转相除法。
/*如果b等于0,计算直接结束,a就是最大公约数。
否则,计算a除以b的余数,让a等于b,而b等于那个余数;
然后回到第一步,再次循环。a b t
12 18 12
18 12 6
12 6 0
6 0
*/
#include<stdio.h>int main(){
int a,b;
int t;
scanf("%d %d", &a, &b);
while( b!=0 ){
t = a%b;
a = b;
b = t;
}
return 0;
}
Nikiklaus Wirth提出的公式:
数据结构+算法=程序
教材认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
这4个方面是一个程序涉及人员所应具备的知识。
加油。