”最小公倍数与最大公约数“测试代码 程序原理及测试截屏

来源:互联网 发布:红警2点网络进不去 编辑:程序博客网 时间:2024/06/05 01:20
(1)辗转相除法
#include<stdio.h>void main()   /*  辗转相除法求最大公约数 */   {      int m,n,a,b,c;     printf("输入两个数字:\n");     scanf("%d,%d",&a,&b);     m=a;      n=b;     while(b!=0)  /* 余数不为0,继续相除,直到余数为0 */      {    c=a%b;    a=b;     b=c;   }     printf("最大公约数是:%d\n",a);     printf("最小公倍数是:%d\n",m*n/a);  }
程序原理:

有两整数a和b:

1.  a%b得余数c

2. 若c=0,则b即为两数的最大公约数

3. c≠0,则a=b,b=c,再回去执行1


(2)相减法

#include<stdio.h>void main()  /* 相减法求最大公约数 */  {       int m,n,a,b;     printf("输入两个数字:\n");     scanf("%d,%d",&a,&b);   m=a;   n=b;      while (a!=b)   /* a, b不相等,大数减小数,直到相等为止。*/          if(a>b)   a=a-b;               else   b=b-a;     printf("最大公约数是:%d\n", a);     printf("最小公倍数是:%d\n", m*n/a);  }
程序原理:

有两整数a和b:

1. 若a>b,则a=a-b

2. 若a<b,则b=b-a

3. a=b,则a(或b)即为两数的最大公约数

4. 若a≠b,则再回去执行1


(3)穷举法

 #include<stdio.h>void main()  /* 穷举法求最大公约数 */  {       int m,n,a,b,i,t;     printf("请输入两个数字:\n");     scanf("%d,%d",&a,&b);   m=a;     n=b;      for (i=1;i<=a;i++)           if (a%i==0&&b%i ==0 )    t=i;     printf("最大公约数是:%d\n",t);     printf("最小公倍数是:%d\n",m*n/t);  }   
程序原理:

有两整数a和b:

1.i=1

2.若a,b能同时被i整除,则t=i

3.i++

4. 若 i<= a(或b),则再回去执行②

5.若 i > a(或b),则t即为最大公约数,结束




0 0
原创粉丝点击