Chinaunix首页 | 论坛 | 博客
  • 博客访问: 804914
  • 博文数量: 87
  • 博客积分: 2571
  • 博客等级: 少校
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-19 15:04
个人简介

重新开始,做回自我,爱拼的男人最牛!

文章分类
文章存档

2021年(2)

2020年(3)

2019年(17)

2014年(1)

2011年(1)

2010年(63)

我的朋友

分类: WINDOWS

2010-10-14 12:07:45

用两种方法实现的求两个数的最大公约数和最小公倍数方法。留着为以后参考。
文件: 最大公约数和最小公倍数.rar
大小: 0KB
下载: 下载
一种方法是采用辗转相除法,另一种就是采用累除法。
/*//辗转相除法
int main(int argc, char* argv[])
{
 int p,r,n,m,temp;
 printf("请输入两个正整数n,m:");
 scanf("%d,%d",&n,&m);
 if (n    {
  temp=n;
  n=m;
  m=temp;            //把大数放在n中,小数放在m中
    }
 p=n*m;                   //先将m和n的乘积保存在p中,以便求最小公倍数时用
 while (m!=0)               //求m和n的最大公约数
    { r=n%m;
     n=m;
     m=r;
    }
 printf("它们的最大公约数为:%d\n",n);
 printf("它们的最小公倍数为:%d\n",p/n);    //p是原来两个整数的乘积
 return 0;
}
*/
 
//累除法
int main(int argc, char* argv[])
{
 int n,m,temp;
 int a,b; //最大公约数a,最小公倍数b
 printf("请输入两个正整数n,m:");
 scanf("%d,%d",&n,&m);
 if (n>m) //m=max(m,n)
    {
  temp=n;
  n=m;
  m=temp;           
    }
 if(m%n==0) a=n;
 else{
  for(int i=1;i<=n;i++)
  {
   if(m%i==0&&n%i==0)
   {
    a=i;
    printf("a=%d\n",a);
   }
  }
 }
 printf("最大公约数:%d\n",a);
 b=m*n/a;
 printf("最小公倍数:%d\n",b);
 return 0;
}
 
 
阅读(1257) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-14 17:33:12

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com