设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 517|回复: 2
打印 上一主题 下一主题

利用递归求两个数的最大公约数-已解决

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
Name: 利用递归求两个数的最大公约数
Copyright:
Author:
Date: 24-10-07 09:31
Description:
*/
#include <iostream>
using namespace std;
int rgcd(int a,int b)
{
if(b!=0)
return rgcd(b,a%b);
return a;
}
int main()
{
int v1,v2;
cin>>v1>>v1;//这里粗心
cout<<rgcd(v1,v2)<<endl;
system("pause");
return 0;
}
看下这个程序结果为什么不对
2#
发表于 2009-11-3 02:15:26 | 只看该作者
这个是我根据递归写的,写完了一运行,结果总是1,郁闷死了.
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 02:15:27 | 只看该作者
这个是用辗除法写的:

/*
Name:
Copyright:
Author:
Date: 24-10-07 09:44
Description:
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d %d",&num1,&num2);
if(num1)//把两个数互换
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;//让a、b分别保存num1、num2的副本
b=num2;
while(b!=0)/*利用辗除法,直到b(余数)为0为止*/
{
temp=a%b;//取a和b的余数
a=b;//把b赋给a
b=temp;//把它们的余数赋给b
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
system("pause");
return 0;
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 04:26 , Processed in 0.104263 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表