| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4150 人关注过本帖
标题:求最大公约数代码
只看楼主 加入收藏
zfxheb123
Rank: 1
来 自:山东济宁
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-4-30
结帖率:100%
收藏
 问题点数:0 回复次数:6 
求最大公约数代码
#include <stdio.h>
void main()
{
    int a,b,c,i,x,y,m=1;
    printf("请输入两个正整数\n");
    scanf("%d %d",&a,&b);
    if (a>0&&b>0)
    {
        c=a<b?a:b;
        int i=2;
       while (i<=c)
           {
             x=a%i;y=b%i;
            if (x==0&&y==0)m=i;
            i++;
           }
      if(m==1)printf("无最大公约数");
        else printf ("最大公约数%d",m);
      }
  else printf("两个数不合法\n");
}
搜索更多相关主题的帖子: 最大公约数 代码 void int main 
2008-04-30 20:32
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
LZ 搜索下 有很多这样的帖子  回答很多了 也很详细

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-30 21:43
纨酷子帝
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-4-30
收藏
得分:0 
/*用vc6++测试通过,欧几里德法求最大公约数,就这么简单*/
#include "stdio.h"
void main()
{int m,n,k;
scanf("%d,%d",&m,&n);/*如,输入12,8 */
if(m<n)
{k=m;m=n;n=k;}
k=m%n;
while(k)
{m=n;n=k;k=m%n;}
printf("所求最大公约数为:%d\n",n);
}
欧几里德算法:(辗转相除法求最大公约数)如果a、b都是正整数,且a>b。则a=bq+r, 0<r<b,即r=a mod b,此处r,q都是正整数。那么,(a,b)=(b,r); 符号 (a,b)为a、b之间的最大公约数。证明:若d|a(d能被a整除),d|b,而r=a-qb,则d|r,即d是a,b的公约数也就是b,r的公约数,则其最大公约数也必然相等。

编程高手 QQ群:19728471。只为交流,共同进步,非诚勿扰!
2008-05-01 00:50
zfxheb123
Rank: 1
来 自:山东济宁
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-4-30
收藏
得分:0 
回复 3# 的帖子
你的代码有问题。。。自己好好看看
2008-05-02 17:02
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
问题好多。
不止一点点,而且那个算法
3楼自己理解了吗?

我秀我自己
2008-05-02 18:27
纨酷子帝
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-4-30
收藏
得分:0 
回复上面的:
#include "stdio.h"
void main()
{int m,n,k;
scanf("%d,%d",&m,&n);/*如,输入12,8 (注意输入时两个数之间加逗号*/
if(m<n)
{k=m;m=n;n=k;}/*如果m<n则调换,否则不执行该调换!这样m就是你输入的两个数的大的那个*/
k=m%n;/*k是m(大数)对n(小数)的余数*/
while(k)
{m=n;n=k;k=m%n;}/*如果k是0那么n就是最大公约数,比如8%4=0则4是8和4的最大公约数,不执行这个while循环;如果k不是0,反复执行求上一次的除数与上一次的余数的余数直到该余数为0,比如12%8=4,8%4=0则4是12和8的最大公约数(已经证明了!!看不懂??在vc++6.0运行完美,别用TC2.0)*/
printf("所求最大公约数为:%d\n",n);
}

编程高手 QQ群:19728471。只为交流,共同进步,非诚勿扰!
2008-05-04 00:39
江上清风
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-3-18
收藏
得分:0 
#include "stdio.h"
#include "conio.h"
main()
{
  int a,b,c,num1,num2,temp;
  printf("please input two numbers:\n");
  scanf("%d,%d",&num1,&num2);
  c=num1*num2;
  if(num1<num2)/*交换两个数,使大数放在num1上*/
  {
    temp=num1;
    num1=num2;
    num2=temp;
  }
  a=num1;b=num2;
  while(b!=0)/*利用辗除法,直到b为0为止*/
  {
    temp=a%b;
    a=b;
    b=temp;
  }
  printf("gongyueshu:%d\n",a);

  printf("gongbeishu:%d\n",c/a);
  getch();
}
2012-04-03 08:46
快速回复:求最大公约数代码
数据加载中...
 
   



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

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