求两个数m和n的最大公约数 帮我把每行代码都详细解释一下。。

# include<stdio.h>
int main()
{
int m,n;
int temp;
scanf("%d%d",&m,&n);
while(m%n!=0)
{
temp=n;
n=m%n;
m=temp;
}
printf("%d\n",n);
return 0;

# include<stdio.h> //引入头文件(不解释)
int main() //main函数,程序入口(不解释)
{
int m,n; //定义整数 m,n
int temp; //定义中间变量(也叫临时变量) temp
scanf("%d%d",&m,&n); //读取 m,n的值(键盘输入)
while(m%n!=0) //进入while循环,循环条件为取余不为0(m除以n 余数不为0)
{
temp=n; //对中间变量temp赋值为n
n=m%n; //将m除以n的余数赋值给n
m=temp; //将中间变量赋值给m
}
printf("%d\n",n); //打印n
return 0; //返回0 因为main函数定义返回值为int型

只是注释的话没什么意义,这个题目重点在于理解两条:
第一.取余运算和while循环
第二.怎么样利用这两点算出公约数(算法)
其中第二条是重中之重,但看循环的话没法明白道理,可以用数字举例说明
首先看特例:比如 m=9 n=3 很显然 最后结果就是3 那么运行过程就是
从键盘读取了 9和3 然后进入while循环 条件是 m%n!=0 条件不成立所以没有进入循环由此可知 m能被n整出这样n就是最大公约
下面看常规例子 m=9 n=6 结果是3 看运行
读取 9和3之后 进入while循环 发现m%n!=0 条件成立 因为m%n=3
接下来的三行while内语句就是 temp=6; n=3; m=6;
根据这个结果再一次进入while循环 条件 m%n=0 所以跳出循环 n=3
你可以多尝试几个例子O(∩_∩)O~;
总结:比较初级的一个题目,不过过程不太好想,尤其是自己思考最大公约数问题
知识点1.temp变量的使用
2.%运算符的运用(打破常规的除法运算方式)
3.while循环条件(尤其是 条件运算表达式带有否定含义时的真假判别)
4.return 0 经常会忘记.
温馨提示:内容为网友见解,仅供参考
无其他回答

求两个数m和n的最大公约数 帮我把每行代码都详细解释一下。。
int main() \/\/main函数,程序入口(不解释){ int m,n; \/\/定义整数 m,n int temp; \/\/定义中间变量(也叫临时变量) temp scanf("%d%d",&m,&n); \/\/读取 m,n的值(键盘输入)while(m%n!=0)

用流程图求两个数m与n的最大公约数
a=max(m,n)b=min(m,n)循环 if b被a整除 输出b,即为最大公约数 停止循环 else c=a-b a=max(b,c)b=min(b,c)end

c语言,求两个数m和n的最大公约数的流程图。
1、判断m能否被n整除,如果能,则最大公约数就是n。如果不能则进行下一步骤。2、k=m-n。比较n和k,假设n大,k小。m=n; n=k; 重复第1步骤。直到m能被n整除为止。编程:int big_divisor(int m, int n){ int min,max,k=m;do { max=MAX(k,n);min=MIN(k,n);m=max;n=min;k=...

c语言,求两个数m和n的最大公约数的流程图。
1、判断m能否被n整除,如果能,则最大公约数就是n。2、k=m-n。比较n和k,假设n大,k小。m=n; n=k; 重复第1步骤。直到m能被n整除为止。include "stdio.h" \/\/包含头文件 main(){ int m,n,i,min; \/\/定义变量 printf("Please Input n and m:\\n"); \/\/打印这句话 scanf("%d%d"...

C语言求两个数m、n的最大公约数。(带注释)
则 m = n,n = a,继续求余 否则(即若a为0)n 为最大公约数 gcd(int a,int b){ int t;if (a < b)t=a,a=b,b=t;if (b == 0)return a;else t= a%b;while (t!= 0){ a=b;b=t;t=a%b;} return b;} main(){ int a,b;printf("输入两个数字:");scanf("%d%d"...

C语言编程:输入两个正整数m和n,求它们的最大公约数。
代码及注释如下:include <stdio.h> int GCD(int a,int b)\/\/定义函数,用来计算最大公约数 { return b==0?a:GCD(b,a%b);\/\/此处使用了递归,如果b=0,返回a为最大公约数,否则,一直以b与a%b赋给函数,实现辗转相除 } int main(){ int a, b ; \/\/定义实参a, b int answer ; \/...

求两个数m和n的最大公约数?用NS图怎么画?
代码如下:int MaxFactor(const int &m,const int &n){ if(m<n) \/\/默认为m>n,若不是,则交换 return MaxFactor(n,m); if(m%n==0) \/\/能整除,最大为n return n; else \/\/不能整除,辗转相除 return MaxFactor(n,m%n);} ...

python中求最大公约数的三种方法
m, n = n, m % n gcd = n 其次,辗转相减法,它是基于两个数相减后,最大公约数不会变的性质。代码如下:python while p != q:if p > q:p = p - q else:q = q - p gcd = p if p == q else q 最后,枚举法是一种简单但效率较低的方法,通过遍历所有可能的公约数来寻找...

求两个整数m和n的最大公约数
最大公约数(Greatest Common Divisor,缩写为gcd)是指能够同时整除给定的两个或多个整数的最大正整数。求解最大公约数是数论中的一个基本问题,在计算机科学、信息学、密码学等领域都有广泛的应用。要求得两个整数m和n的最大公约数,可以采用多种方法,以下是其中常用的两种方法:1、辗转相减法:辗转...

求两个正整数m和n的最大公约数
求两个正整数的最大公约数的算法通常使用“辗转相除法”。设有两个正整数m、n,求它们的最大公约数的算法如下:①若m<n,则交换m和n(保证m大于n)。②计算m\/n的余数r。③若r不等于0,则令m=n、n=r,转第②步继续执行;否则,算法结束,n就是最大公约数。下面就是用“辗转相除法'才...

相似回答