关于c++的一道题目求最大公约数~~

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:07:44
我碰到了这样的一道填空题 做不出 哪位高手帮帮忙
题目如下:用辗转相除法求两个整数的最大公约数
#include<stdio.h>
main()
{
int r,m,n,___;
scanf("%d%d",&m,&n);
if(m<n)
____________
r=m%n;
while(r)
{
m=n;
n=r;
r=________;
}
printf("%d\n",n);
}

横线中应该写什么呢?
其实答案倒是次要的,最重要的是这个题该怎么解
我想知道 这个题为什么这么写,横线怎么填,然后辗转相除法 是什么东东~~~
麻烦大虾一个个为偶这个菜鸟解答下吧~~~~
对了 还有这个 while 的循环语句 怎么看 我看不来
好象有 while, do while,和 for 都是循环语句的
有什么区别么 我该怎么用呢 最好举个例子 麻烦大伙了

#include<stdio.h>
main()
{
int r,m,n,temp;
scanf("%d%d",&m,&n);
if(m<n)
temp=m,m=n,n=temp;
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
printf("%d\n",n);
}
我已经补充完整了。辗转相除法,是把原来的除数当成下次的被除数,余数当成下次的除数,知道余数位0,则对应的除数位最大公约数。
while是先判断条件。do while是先执行一次,在判断条件。
for循环可以认为是一种特殊的while循环,它也是先判断条件。
有问题hi我。

#include<iostream>
using namespace std;

int main()
{
int r,m,n, temp/*___*/;
scanf("%d%d",&m,&n);
if(m<n)
{
temp = m;
m = n;
n = temp;
}//____________
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;//r=________;
}
printf("%d\n",n);
}

你问的东西随便拿本c/c++的课本都有

像这种简单的程序就是把你解题的思路 翻译成c/c++语言而已嘛!!

前面两位说的很正确,欧几里得算法,也叫碾转相除法