| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 941 人关注过本帖
标题:求最大公约数和最小公倍数
只看楼主 加入收藏
ccmelomelo
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-10-24
结帖率:100%
收藏
已结贴  问题点数:6 回复次数:15 
求最大公约数和最小公倍数
程序代码:
#include<stdio.h>
void main()
{
int m,n,i,j,t=1,a=0;
scanf("%d,%d",&m,&n);
for(i=2;i<=(m<n?m:n);)
{
if(m%i==0&&n%i==0)
{
t*=i;
m=m/i;
n=n/i;
}
else i++;
}
for(j=(m>n?m:n);a<1;)
{
if(j%m==0&&j%n==0)m++;
else j++;
}
printf("the max common divisor is:%d\n",t);
printf("the min common multiple is:%d\n",j);
getch();
} 

我很菜,不懂为什么错,尽管骂吧...

[ 本帖最后由 ccmelomelo 于 2010-11-29 10:01 编辑 ]
搜索更多相关主题的帖子: 最小公倍数 公约数 
2010-11-29 10:00
DreamSkyCC
Rank: 2
来 自:河北赵县
等 级:论坛游民
帖 子:40
专家分:58
注 册:2010-11-28
收藏
得分:0 
逻辑错误,给你一个正确答案吧!用到了递归调用!
#include <stdio.h>
int func(int a, int b)
{
    int tmp;
    if(a%b == 0)
    {
        return b;
    }
    else
    {
        tmp = a;
        a = b;
        b = tmp%b;
    }
    func(a,b);
}
int main(int argc , char *argv[])
{
    int a,b;
    int m;
    printf("please input a,b:\n");
    scanf("%d,%d",&a,&b);
    if(a < b)
    {
        m = a;
        a = b;
        b = m;
    }
    m = func(a,b);
    printf("gcd is:%d\n",m);   

    return 0;
}
这是求最大公约数的!

努力总会有收获!
2010-11-29 10:22
DreamSkyCC
Rank: 2
来 自:河北赵县
等 级:论坛游民
帖 子:40
专家分:58
注 册:2010-11-28
收藏
得分:0 
#include <stdio.h>
int func(int a, int b)
{
    int tmp;
    if(a%b == 0)
    {
        return b;
    }
    else
    {
        tmp = a;
        a = b;
        b = tmp%b;
    }
    func(a,b);
}
int func1(int a, int b, int m)
{
    int max_lcd;
   
    max_lcd = a * b / m;
   
    printf("max_lcd is:%d\n",max_lcd);

    return 0;
}
int main(int argc , char *argv[])
{
    int a,b;
    int m;
    printf("please input a,b:\n");
    scanf("%d,%d",&a,&b);
    if(a < b)
    {
        m = a;
        a = b;
        b = m;
    }
    m = func(a,b);
    printf("gcd is:%d\n",m);
   
    func1(a,b,m);
    return 0;
}


求最大公约数和最小公倍数!

努力总会有收获!
2010-11-29 10:40
ccmelomelo
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-10-24
收藏
得分:0 
不是我想要的。
2010-11-29 11:35
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:0 
#include<stdio.h>
void main()
{
int m,n,i,j,t=1,a=0;
scanf("%d,%d",&m,&n);
for(i=2;i<=(m<n?m:n);)
{
if(m%i==0&&n%i==0)
{
t=i;        //这里改动.
//m=m/i;
//n=n/i;
}
/*else*/ i++;        // 这里改动.
}
j=m*n/t;        //这里添加.
/*for(j=(m>n?m:n);a<1;)         //删除.
{
if(j%m==0&&j%n==0)m++;
else j++;
}*/
printf("the max common divisor is:%d\n",t);
printf("the min common multiple is:%d\n",j);
getchar();
}

你看看是不是你想要的.

经验积累中............
2010-11-29 12:15
ccmelomelo
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2010-10-24
收藏
得分:0 
回复 5楼 五当家
运行结果是错的
2010-11-29 12:33
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:0 
两个数a b
公约数 a5i==0&&b%i==0;  min为小的数 max 为大的数
       这里 i可能有很多数 你用for (i=1;i<=min;i++)
                               if(a%i==0&b%o==0)
                                  berak;
                               i求的就是公约数  一定要中断
                           若是  for(i=min;i>=1;i--)
                                 if (a5i==0&&b%i==0)
                                    l=i;
                                     i 有很多数  但是用l=i后 l就是所有i中的最小值 l就是公约数
          公倍数也类似   k=a*b
                   for(i=max;i<=k;i++)
                  if (i%a==0&&i%b==0)
                  break; i就是公倍数
2010-11-29 13:44
白雪纷纷
Rank: 1
等 级:新手上路
帖 子:23
专家分:6
注 册:2010-10-24
收藏
得分:0 
给你一个程序你看一下:
#include<stdio.h>
#include<math.h>
void main()
{   int p,r,n,m,temp;
    printf("请输入两个整数n,m: ");
    scanf("%d%d",&n,&m);
    if(n<m)
    { temp=n;
      n=m;
      m=temp;
    }
     p=n*m;
     while(m!=0)
     {   r=n%m;
         n=m;
         m=r;
     }
     printf("他们的最大公约数为:%d\n",n);
     printf("他们的最小公倍数为:%d\n",p/n);
}
2010-11-30 12:07
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
这么经典的问题,百度下好多啊

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-11-30 15:54
yes59910
Rank: 1
等 级:新手上路
帖 子:1
专家分:6
注 册:2010-11-30
收藏
得分:6 
for(j=(m>n?m:n);a<1;)
{
if(j%m==0&&j%n==0)m++;
else j++;
}
这里死循环了,还有这里的m,n已经不是输入的m,n了
#include<stdio.h>
void main()
{
int m,n,i,j,t=1,a=0,temp1,temp2;
scanf("%d,%d",&m,&n);
temp1=m,temp2=n;
    for(i=2;i<=(m<n?m:n);)
    {
        if(m%i==0&&n%i==0)
        {
           t*=i;
           m=m/i;
           n=n/i;
        }
      else i++;
    }
    for(j=(temp1>temp2?temp1:temp2);a<1;)
    {
     if(j%temp1==0&&j%temp2==0)
         break;
     else
         j++;
    }
printf("the max common divisor is:%d\n",t);
printf("the min common multiple is:%d\n",j);
getch();
}
2010-11-30 16:28
快速回复:求最大公约数和最小公倍数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019222 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved