用辗转相除法求两个整数M和N的最大公约数和最小公倍数,用While循环,循环变量i,

#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "stdlib.h"
void NONO( int m,int n,int s1,int s2);
main()
{ int m=9,n=84,s1,s2,r;
/***********begin***********/

/************end************/
printf("The highest common divisor of %d and %d is %d\n",m,n,s1);
printf("The lowest common multiple of %d and %d is %d\n",m,n,s2);
NONO(m,n,s1,s2);
}

void NONO(int m,int n,int s1,int s2)
{ FILE *f;
f=fopen("out1.dat","w");
fprintf(f,"%d,%d,%d\n",m,n,s1);
fprintf(f,"%d,%d,%d\n",m,n,s2);
fclose(f);
}

求修补

循环变量应该是r吧,
你这里都没有定义i怎么使用?可以自己定义吗?
int a=m;
int b=n;
while(m!=0)/*利用辗除法,直到m为0为止*/   
{   
r=n%m;   
n=m;   
m=temp;   
}   
s1 = n;
s2 = a*b/s1; //最小公倍数等于 两个数的乘积除以最大公约数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-03
我是在VC环境中编译运行的,语句和C十分接近,以下的程序是可以运行的。在你上面代码的基础上来编写,只是填充的是中间的代码:
s1=m>n?n:m; //s1认为是其中最小的值
s2=m>n?m:n; //s2认为是其中最大的值
while(s2%s1)
{
r=s1;
s1=s2%s1;
s2=r;
} //这样的话计算出来的s1就是最大公约数
//下面就算最小公倍数
s2=m*n/s1; //这样就计算出来了
第2个回答  2011-09-03
viod multiple_and_divisor(int m,int n,int *multiple,int *divisor)
{
int remaider;
int div;
int temp;
if(m!=0 && n!=0)
{
remaider = m;
if(m>=n)
{div = m;remaider = n;}
else
{div = n;remaider = m;}

while(0!=remaider)
{
temp = remaider ;
remaider = div %remaider ;
div = temp ;
}
*divisor = div;//最大公约数
*multiple = m*n/div;//最小公倍数
}
else
{
*divisor = 0;//最大公约数
*multiple = 0;//最小公倍数
}
}
第3个回答  2011-09-03
,

用辗转相除法求两个整数M和N的最大公约数和最小公倍数,用While循环,循...
while(m!=0)\/*利用辗除法,直到m为0为止*\/ { r=n%m;n=m;m=temp;} s1 = n;s2 = a*b\/s1; \/\/最小公倍数等于 两个数的乘积除以最大公约数。

C语言程序填空:用辗转相除法求两个整数的最大公约数、最小公倍数。
while(n){ m = n;n = r;r = m%n;} printf("The min Gbshu=%d\\n", m*r );

如何求两个数的最大公约数和最小公倍数
定义两个变量min和max。min用于存储最小公倍数,max用于存储最大公约数。输入m和n的值。使用循环,直到余数r等于0为止。在每次循环中,将m赋值为n,将n赋值为r。这是因为辗转相除法的核心思想是用较大的数除以较小的数,得到的余数作为下一次循环的除数。在循环结束时,r的值即为最大公约数max...

用辗转相减法求两自然数M,N的最大公约数和最大公倍数
应该是辗转相除法 m>n m\/n=p1.r1 n\/r1=p2.r2 r1\/r2=p3.r3 .直到rn为0,则pn为m,n的最大公约数 最小公倍数则是把m,n相乘,然后除以它们的最大公约数

用辗转相除法求两个自然数m,n的最大公约数和最小公倍数的vb程序编写
n As Integer Dim a As Integer,b As Integer Dim r As Integer m = InputBox("输入m")n = InputBox("输入n")a = m b = n Do r = Abs(m - n)m = n n = r Loop While m <> n Print a;"和";b;"最大公约数是";r Print a;"和";b;"最小公倍数是";a b \/ r E...

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

...输入两个正整数m和n,求其最大公约数和最小公倍数
最大公约数:(辗转相除法)调整顺序使m>=n 循环 m=m%n; 如果m=0,则n为最大公约数,跳出循环。注:%表示取余运算。n=n%m; 如果n=0,则m为最大公约数,跳出循环。next 求出最大公约数G后,用m*n\/G得到最小公倍数。

.输入两个正整数m和n,求其最大公约数和最小公倍数。这个程序怎么编啊...
<1> 用辗转相除法求最大公约数 算法描述:m对n求余为a, 若a不等于0 则 m <- n, n <- a, 继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 \/ 最大公约数 include <stdio.h> int main(){ int m, n;int m_cup, n_cup, res; \/*被除数, 除数, 余数*\/ print...

C语言求解。输入两个正整数m和n,求其最大公约数和最小共倍数
int i; for(i = m; i >=1; i ++) if(a%i == 0 && b % i == 0 )break; return i;}int main(){ int m,n,g; scanf("%d%d",&m,&n); g = gcd(m,n); printf("%d 和%d的最大公约数是%d, 最小公倍数是%d\\n", m, n, g, m\/g*n); ...

...输入两个正整数M,N求其最大公约数与最小公倍数,用一个循环结构_百度...
nt;int gcd, lcm; \/* 最大公约数、最小公倍数 *\/scanf ("%d%d", &m, &n);if (nt) \/* 辗转相除法 *\/while((mt %= nt) && (nt %= mt)); \/* 两数反复相除取余,直至被整除 *\/gcd = m+n;lcm = m*n\/gcd;printf ("%d %d\\n", m, n);printf ("The gcd is %d\\n...

相似回答