大家好,我是执念斩长河,一个23届毕业的学渣。今天偶尔有空学习了最大公约数的编程思路,特此写博文祝贺一下。现在完整的演示,这几行代码在说明了什么?
源码测试效果
题目再现&输入输出
给定两个正整数a和b,设计一个算法,计算它们的最大公约数。
Input:12,6
Output:6
源码
#include<stdio.h>
int gcd(int a,int b) {
int i, k, r = 1;
k = a>b?a:b;
for(i=2; i<k;i++){
if(a%i == 0 && b%i==0)
r = i;
}
return r;
}
int main()
{
int a,b,x;
printf("Please input two integers(use dou hao):");
scanf("%d,%d",&a,&b);
x = gcd(a,b);
printf("%d and %d greatest common divisor:%d ",a,b,x);
return 0;
}
源码跑路
假设我们输入,12和6.主程序成功获得输入,a和b分别有了值。现在调用gcd函数,跑到gcd函数里去。 在gcd函数里a=12,b=6.k=12,i=2判断获取最大值进行循环。现在进入循环里,
- i=2,k=12,12%2==0,6%2==0 r=2
- 1=3,k=12 12%3==0 ,6%3==0 r=3
- i=4,k=12,12%4==0,6%4!=0 r=3
- i=5,k=12,12%5!=0,6%5!=0 r=3
- i=6,k=12,12%6==0,6%6==0 r=6
- i=7,k=12,12%7!=0,6%7!=0 r=6
- i=8,k=12,12%8!=0,6%8!=0 r=6
- i=9,k=12,12%9!=0,6%9!=0 r=6
- i=10,k=12,12%10!=0,6%10!=0 r=6
- i=11,k=12,12%11!=0,6%11!=0 r=6
- i=12跳出循环
因此直接6打印出来,与代码效果完美结合。未来考虑“源码跑路”成为我的一个大特色。
|