C语言初步-循环结构-求最大公约数-非递归法

题目描述:

    求两个整数m和n的最大公约数.

题目解析:

    从最小的那个整数开始,用x表示,如果x能同时被m和n整除,则找到,否则试探x-1.

参考程序:

#include"stdio.h"

int gcd(int m,int n)

{

      int x=m;

      if(x>n) x=n;

     

      while(1)

      {            

             if(m%x==0 && n%x==0)

                    return x;

             else

                    x--;

      }

}

int main(void)

{ 

       int x,y,gcd2;

       x=48;y=32;

       gcd2=gcd(x,y);

       printf("%d\n",gcd2);

       x=24;y=48;

       gcd2=gcd(x,y);

       printf("%d\n",gcd2);

     return 0;

}

随想:

中学时,求m、n的最大公约数,采取的是找寻m、n的公共素数约数的方法。

在当时,一般学生的思维能力还欠缺,讲辗转相除法,肯定大批的人懵逼。

讲上面这个方法,对于m、n都比较大时,计算速度慢,

因此找公共素数反而是一个折衷的办法。

人的发展是需要一个过程的,其思维成熟也需要一个过程,

因此有人小时了了,大未必佳,

也有人大器晚成。

人生在世,其实活的是一个过程。

人生路上多风景,慢慢走,欣赏啊。

猜你喜欢

转载自blog.csdn.net/weixin_43917370/article/details/106925539