两个数的最大公约数

来源:互联网 发布:线路板pcb设计软件 编辑:程序博客网 时间:2024/05/18 01:58
#include<stdio.h>             
int main()
{
  int i=-9, j=-3;
  int m=0;
  int max=0;
  for(m = 2;m <= j;m++)
   {
       if((i%m == 0)&&(j%m == 0))
{    
if(m>max)
           {max = m;} 
         }
  }
  printf("最大公约数为:%d ",max);
  return 0;

}

上面代码是起先做的代码,比较简易,但是在后面想到如果是输入一个负数的情况,这个代码是不行的,所以基于上面的代码进行了优化和完善,仅供参考。



#include<stdio.h>
#include<math.h>
int main()
{
   int m,n,i,a;


   printf("请输入两个数->");
   scanf("%d %d",&m,&n);


   if(m>n)                        //使用了abs函数,解决了当输入一个负数而不能计算的缺点
     {a= abs(n);}

    else{a=abs(m);}

    for(i = a; i > 0 ; i--)   //从较小数开始逐级递减计算,上面代码是从0到输入值逐级增加,优化了代码运行速度
     {
       if((m % i == 0) && (n % i == 0))
         {
          printf("这两个数的最大公约数为 %d \n",i);
   
          break;
         }
  
      }

      return 0;
  }









0 0
原创粉丝点击