新微赢技术网

标题: 利用递归求两个数的最大公约数-已解决 [打印本页]

作者: 小华﹖    时间: 2009-11-3 02:15
标题: 利用递归求两个数的最大公约数-已解决
/*
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;
}
看下这个程序结果为什么不对
作者: 让爱留在心底    时间: 2009-11-3 02:15
这个是我根据递归写的,写完了一运行,结果总是1,郁闷死了.
作者: ωǒ↘倫↙    时间: 2009-11-3 02:15
这个是用辗除法写的:

/*
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;
}




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2