| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:关于最大公约数的问题
只看楼主 加入收藏
犹豫情人
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:58
专家分:24
注 册:2010-7-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:32 
关于最大公约数的问题
#include <math.h>
#include <stdio.h>
 int main ()
{
    int m,n,yu;
    printf("请输入所要求的两个数!\n");
    scanf("%d,%d\n",&m,&n);
   
    yu=m%n;

    while(yu!=0)
    {   
        m=n;
        n=yu;
        
        yu=m%n;
    }

    printf("最大公约数为%d:\n",m);
   
    return 0;
}

    printf("最大公约数为%d\n",m);
   
   
}
我输入的60 30 结果却是-40,我看过论坛里面关于公约数的帖子了!但是还是没找到错误出在那里!!

搜索更多相关主题的帖子: 公约数 return 
2011-05-05 22:21
ucyan
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:198
注 册:2011-4-12
收藏
得分:1 
程序代码:
int hcf (int a, int b)
{
    int r, t;
    if (a < b)
    {
        t = a; a = b; b = t;
    }
    r = b % a;
    while (r != 0)
    {
        b = a;
        a = r;
        r = b % a;
    }
    return a;
}
你少了比较a,b两个数值的大小
2011-05-05 22:28
陈潍溢
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2011-4-15
收藏
得分:2 
以下是引用犹豫情人在2011-5-5 22:21:16的发言:

#include
#include
 int main ()
{
    int m,n,yu;
    printf("请输入所要求的两个数!\n");
    scanf("%d,%d\n",&m,&n);
   
    yu=m%n;

    while(yu!=0)
    {   
        m=n;
        n=yu;
        
        yu=m%n;
    }

    printf("最大公约数为%d:\n",m);
   
    return 0;
}

    printf("最大公约数为%d\n",m);
   
   
}
我输入的60 30 结果却是-40,我看过论坛里面关于公约数的帖子了!但是还是没找到错误出在那里!!
即使不比较大小,上面也有点问题,这里:  printf("最大公约数为%d:\n",m);
应该为printf("最大公约数为%d:\n",n),下面那行也是的
2011-05-06 00:09
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:5 
这个不好理解,我也还没有搞清楚是怎么个原理!分析一下:两个数的最大公约数最小是1,最大是两个数中最小的一个。那么我们只要从1开始一直试到最小的那个数就可以得  到结果!用一个变量随时记忆最新的公约数就OK了.
程序代码:
int fun(int m,int n)
{
   int t,Result=1;
   if(m<n) //让n是较小的那个
    {
       t=m;
       m=n;
       n=t;
     }
    for(t=1;t<=n;t++) //t从1到n开始试
     {
        if(n%t==0&&m%t==0)
        Result=t;  //因为是从小到大测试,所以最后的值一定是最大公约数
      }
     return Result;
}


[ 本帖最后由 qq1023569223 于 2011-5-6 00:21 编辑 ]

   唯实惟新 至诚致志
2011-05-06 00:19
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
int m,n,yu;
    printf("请输入所要求的两个数!\n");
    scanf("%d,%d",&m,&n);
   
    yu=m%n;

    while(yu!=0)
    {   
        m=n;
        n=yu;
        
        yu=m%n;
    }

    printf("最大公约数为%d:\n",n);
2011-05-06 06:48
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:1 
回复 楼主 犹豫情人
scanf("%d,%d\n",&m,&n);
我输入的60 30

应该
scanf("%d%d",&m,&n);


《狂人C:程序员入门必备》
2011-05-06 08:53
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
回复 楼主 犹豫情人
printf("最大公约数为%d:\n",m);

这个也不对

《狂人C:程序员入门必备》
2011-05-06 08:56
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
比较大小是多余的

《狂人C:程序员入门必备》
2011-05-06 08:59
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
  int m,n,yu;

  printf("请输入所要求的两个数!:");
  scanf("%d%d" , &m , &n );

  while( ( yu = m % n ) !=0)
  {   
    m = n ;
    n = yu;
  }

  printf("最大公约数为:%d\n", n );

  system("PAUSE");   
  return 0;
}

《狂人C:程序员入门必备》
2011-05-06 09:00
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
回复 楼主 犹豫情人
#include <math.h>
多余

《狂人C:程序员入门必备》
2011-05-06 09:00
快速回复:关于最大公约数的问题
数据加载中...
 
   



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

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