请问这个用C语言c语言中求最大公约数数的程序这三个空应该怎么填呢?

c语言的问题,求两个数的最大公约数和最小公倍数怎么求?请把程序写完整和正确,有一个人给我回复了但是他写错了.请正确对待
编译过了,一定正确#include void main(){int a,b,i,j;printf("请输入两个数:");scanf("%d%d",&a,&b);if(a1;i--)if(a%i==0&&b%i==0)for(j=a;;j++)if(j%a==0&&j%b==0)printf("\n最大公约数是:%d",i);printf("\n最小公倍数是:%d",j);}
为您推荐:
其他类似问题
扫描下载二维码C语言求最大公约数的程序_百度知道
C语言求最大公约数的程序
要求要自定义函数,我写了个#include&stdio.h&int bc,c,r;int G(int a,int b)&&&&{ bc=a; &&&&c=r; &&&&r=a%b;&&&&while(r!=0) &&&&bc=c; &&&&c=r; &&&&r=bc%c; &&&&}void main(){&&&&int x,y; &nb订沪斥疚俪狡筹挟船锚&&&printf(&输入两个正整数a,b,a&b:&); &&&&scanf(&%d%d&,&x,&y); &&&&printf(&a,b的最大公约数是%d,&,G(x,y));}执行就不对劲了,输入两个数没有任何反应...
提问者采纳
加{},如下,你再试试呢?我还没有仔细看,不过感觉while语句应该有问题。 wh订沪斥疚俪狡筹挟船锚ile(r!=0){
啊啊啊啊 多弱智级的错误!!!!还有个问题请教下,我加段函数求最小公倍数:int L(int a,int b){ int L; L=a*b/c; return L;}main函数最后输出函数改成printf(&a,b的最大公约数是%d\n,最小公倍数是%d\n&,G(x,y),L(x,y));然后执行就变成这样了是咋回事啊?..不用函数直接在main函数里写也一样的
那个L函数有些问题吧。你先把G函数彻底调通。然后再加上L函数。L函数中的变量c在被执行操作a*b/c前,务必看一下是否是0。如果是0那么就会看到停止工作的窗口。估计还是由于G函数有逻辑上的错误,导致算出的 c一直是0了。
找了一个环境试了一下,把函数G做以下修改后没有问题了。int G(int a,int b){
while(r!=0)
跟你的主要区别是c=b,不是c=r
注意,这个仅仅是第二行才需要修改。
晕 我好像是打错了 一会儿回去再敲下
提问者评价
算了 我再提问一次
其他类似问题
为您推荐:
最大公约数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何用C语言来编写:求最大公约数和最小公倍数程序._百度知道
如何用C语言来编写:求最大公约数和最小公倍数程序.
提问者采纳
不可半者,得到商8,a>b,实际上就是辗转相除法; res = m_cup % n_cup, 求其最大公约数和最小公倍数,a和b的公约数与b和r1的公约数完全一样; 用辗转相除法求最大公约数 算法描述,就是最大公约数,副置分母输入两个正整数m和n。求“等数”的办法是“更相减损”法,如果一个数d,余数r1;);;?所以a和b的最大公约数也是r1了,得商1;Gre int m_cup, 除数。以等数约之; res = m_cup % n_cup。 先用较大的75569除以52317,你能迅速地求出它们的最大公约数吗; while (res ,从而也是a1b的公约数,现摘录如下;Enter two integer, 余数*&#47?一般来说你会找一找公共的使因子:“可半者半之;- n。” 其中所说的“等数”。那b1r1的最大公约数,求其等也;Error,我们也可以有和上面一样的式子,那么由l)式。要是r1≠0:a=bq1+r1------l) 如果r1=0,……直到余数为零为止,肯定找不到, n &n&quot,那么r1就是所求的最大公约数3,余数是5813; 最小公倍数 = 两个数的积 &#47: 约分术曰;1&gt, 继续求余 否则 n 为最大公约数 &lt,那么由1)式,那么b就是a: m对n求余为a; 最大公约数 #include int main() {
if (m &gt?因为如果2)式变成了b=r1q2; } printf(&quot。 在这种方法里!&#92,那么这两对的最大公约数也一定相同. &- a,那r2不等于0怎么办,不好找: %d&#92,这题可麻烦了。 反过来、b两个整数的最大公约数。你要是用分解使因数的办法!= 0) { m_cup = n_2&gt。这样5813就是7的最大公约数,就继续除,0) { m_cup = m, n_ } else printf(&quot,先做除数的,能同时整除a1b。 有人会说; printf(&quot。 这样, res,就一定能整除a。 比如说有要求a; /Lease common multiple ,这就是辗转相除法名字的来历吧,用r1除以r2;*被除数, &m; } ★ 关于辗转相除法; printf(&quot,余数23252,再用23252做被除数:&#92,也一定能整除r1。 对于5两个数,再以52317除以23252,后一步就成了被除数;n&quot, 在我国古代的《九章算术》中就有记载, n_cup); scanf(&quot, &n);%d %d&quot。 辗转相除法求最大公约数,比较快;); 0 && n & n_cup = n,在r1=0时,那么b1r1的公约数就一定是a1b的公约数,用b除以r1,那么我们先用a除以b; n_cup = res?那当然是继续往下做;n&quot?下面我就给大伙谈谈, m * n &#47: %d\,不就是r1吗、b的最大公约数3; n_cup);n&quot。这是因为一个数能同时除尽b和r1; return 0: b=r1q2+r2-------2) 如果余数r2=0,5813做除数, 搜了一下、子之数,是一种比较好的方法,以少减多。 那么,更相减损,质因子大。 现在教你用辗转相除法来求最大公约数,得商2,正好除尽得商数4,这辗转相除法为什么能得到最大公约数呢:a÷b=q1…r1我们当然也可以把上面这个式子改写成乘法式。为什么呢,从而也有d是b1r1的公约数, 若a不等于0 则 m &lt
其他类似问题
为您推荐:
其他4条回答
h&最大公约数, int b) { return(a*b&#47, if (a& printf(& long GCD(, int b) &#47, b, &b):GCD(%d; b=t#include & scanf(& } if (b==0) return(a):\ else return(GCD(b, a, a, a%b));n& } long LCM(int a, GCD(a, %d) = %d\GCD(a, b)), %d) = %d\ } void main() { int a,请输入2个整数;最小公倍数, b)):LCM(%d;n&n&);;%d%d&quot, &a; printf(&quot, LCM(a, b)); printf(&;b) { t=a;/ a=b;辗转相除法求最大公约数 { int t
首先说一下辗转相除法,辗转相除法是古希腊求两个正整数的最大公约数的,也叫欧几里德算法,
用较大的数除以较小的数,结果的余数和被除数构成新的一对数,继续做上面的除法,
直到大数被小数求尽,这个较小的数就是最大公约数.
现以求288和123的最大公约数为例,操作如下:
(288,123)--(42,123)--(42,39)--(3,39)则3就是他们的最大公约数。
至于最小公倍数, 则是两个数相乘,然后再除以最大公约数。
代码实现如下:
//求最大公约数和最小公倍数.
#include&stdio.h&
void main()
int m=0,n=0,h,g;
int gcd(int,int);
int lcd(int,int,int);
scanf(&%d %d&,&m,&n);
h=gcd(m,n);
printf(&最大公约数:%d\n&,h);
g=lcd(m,n,h);
printf(&最小公倍数:%d\n&,g);
请楼主问问题之前先~~~~ 搜索答案 ~~~~,这题做了100遍了!
#include&stdio.h&void main(){ int min(int x,int y); int m,n,p,i; scanf(&%d%d&,&m,&n); p=min(m,n); for(i=p;i&=1;i--)
if(m%i==0&&n%i==0)
printf(&The max mcdivisor is:%d\n&,i);}int min(int x,int y){ if(x&y)z=x; else z=y; return(z);}
最大公约数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 c语言最大公约数递归 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信