C语言编程中最小公倍数怎么求?
在C语言中,要求两个数的最小公倍数可以通过以下步骤实现。首先,先求出这两个数的最大公约数,可以使用辗转相除法或欧几里得算法来求解。然后,使用最小公倍数等于两数乘积除以它们的最大公约数的公式,即LCM = (a*b)/GCD(a, b)来计算最小公倍数。在C语言中,可以定义一个函数来实现求最大公约数的功能,再在主函数中调用这个函数并使用上述公式来计算最小公倍数。通过这种方法,就可以在C语言中求出两个数的最小公倍数。
怎样用C语言程序编程实现m和n的最大公约数和最小公倍数,用do-while循环?
从键盘接收两个int型整数m和n,先求出最大公约数,再由”m/最大公约数*n”来求得最小公倍数。代码如下:
#include “stdio.h”
int main(int argc,char *argv[]){
int m,n,g;
printf(“Input m & n(int m,n>0)…n”);
if(scanf(“%d%d”,&m,&n)!=2 || m<1 || n<1){//输入两个整数,保证大于0
printf(“Input error, exit…n”);
return 0;
}
g = (m<n ? m : n)+1;
do{//用穷举法求GCD
g–;
}while(m%g || n%g);
printf(“nThe GCD is %dnThe LCM is %dn”,g,m/g*n);
return 0;
}
c语言 最大公约数与最小公倍数问题,答案总是有百分之二十五错的??
- #includestdio.hint gcd(int a,int b);int缉沪光疚叱狡癸挟含锚 main(){ double a,b,m,n; scanf("%lf %lf",&a,&b); m=gcd(a,b); n=a*bm; printf("%.0f %.0fn",m,n); return 0;}int gcd(int a,int b){ if(a%b==0) return b; else return gcd(b,a%b);}????在原程序上改,详细点,谢谢!!
- 这样的试试?#include&缉沪光疚叱狡癸挟含锚lt;stdio.hlong gcd(long a,long b);int main(){ long a,b,m,n; scanf("%ld %ld",&a,&b); m=gcd(a,b); n=a*bm; printf("%.0f %.0fn",m,n); return 0;}long gcd(long a,long b){ if(a%b==0) return b; else return gcd(b,a%b);}
C语言 求最小公倍数和最大公约数
- #includestdio.hmain(){ int m,n,t,i,a,b; scanf("%d%d",&m,&n); if(nm) { t=m; m=n; n=t; } i=n; while(i=1) { a=m%i; b=n%i; if(a==0&&b==0) { printf("最大公约数为:%dn",i); break; } else if i–; } i=m; while(m=m*n) { a=i%m; b=i%n; if(a==0&&b==0) { printf("最小公倍数为:%dn",i); break; } else if i++; }}为什么我这个他老提示 i 错误,求大神解释,谢谢…..
- #include stdio.hvoid main(){int x,y,tempGY,tempGB,GY,GB; printf("输入两个正整数(用空格分开),求这两个正整数的最小公倍数和最大公约数:n"); scanf("%d%d",&x,&y); for(int i=1;i=(xy?x:y);i++){if(x%i==0 && y%i==0)GY=i;} for(i=tempGB;i=(xy?y:x);i–){if(i%x==0 && i%y==0)GB=i;}printf("最大公约数是%d,最小公倍数是%dn",GY,GB);getchar();}
初学者:C语言求两个整正数的最大公约数和最小公倍数,怎么错了???
- #includestdio.hint main(){ int a,b,c,d,e; scanf("%d%d",&a,&b); do { c=a%b; if(c!=0) a=b; b=c; printf("%d%dn",a,b);break;} while(c=0)甫触颠吠郯杜奠森订缉; d=b; e=a*bd; printf("%d%dn",d,e); return 0;}
- 代码可以加一些注释吗? 我怎么看都不理解你求的过程
c语言输入两个正整数m、n求最大公约数和最小公倍数,求大神看看我哪错
- c语言输入两个正整数m、n求最大公约数和最小公倍数,求大神看看我哪错了,第二个输出不对
- 把第二个i从最m或n(哪个最大就i=那个)开始就不会出现这种错误了.另外:我都不明白,老是有一大堆人说代码有问题,却只知发图,有些更离谱,只是用手机拍个不清不楚的图.你以为是美女咩??无图无真相呀?!发个代码不会比截图麻烦吧?至少在我而言ctrl+C,Ctrl+V 肯定比截图保存再上传快.有心想帮你也没有多少精神去看你的图中代码呀!再说了肯定是用编译器跑代码比用脑子跑容易发现并定位问题吗,特别是稍微长点的代码!!在此奉告所有那些代码有问题想问人的同学,请直接贴上代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!
c语言最大公约数和最小公倍数
- #include stdio.hint main(){ int yue(int m,int n); int bei(int m,int n); int gy,gb,i,j,l; printf("请输入两个整数:n"); scanf("%d %d",&i,&j); if (ij) {l=i; i=j; j=l;} gy=yue(i,j); gb=bei(i,j); printf("最大公约数:%dn",gy); printf("最小公倍数:%dn",gb); return 0;}int yue(int m,int n){ int l; l=m%n; if (l==0) return(n); else yue(n,l);}int bei(int i,int j){ int l; l=i*jgy; return(l);}——————-Configuration: task3 – Win32 Debug——————–Compiling…task3.cE:task1task3task3.c(26) : error C2065: gy : undeclared identifier执行 cl.exe 时出错.task3.obj – 1 error(s), 0 warning(s)求大神指点哪里错了。。
- gy没有定义#include stdio.hint main(){int yue(int m,int n);int bei(int m,int n,int gy);int gy,gb,i,j,l;printf("请输入两个整数:n");scanf("%d %d",&i,&j);if (ij) {l=i; i=j; j=l;}gy=yue(i,j);gb=bei(i,j,gy);printf("最大公约数:%dn",gy);printf("最小公倍数:%dn",gb);return 0;}int yue(int m,int n){ int l;l=m%n;if (l==0) return(n);else yue(n,l);}int bei(int i,int j,int gy){int l;l=i*jgy;return(l);}因为你的gy是main函数里面的局部变量,在bei()函数里面没有被定义
用c++语言求最大公约数和最小公倍数,求解哪里错了
- #includeiostreamint main(){ using namespace std; int m,n; cout"请输入两个数:"; cinmn"n"; int t=(nm?m:n); while(m%t!=0||n%t!=0) { t=t-1; } cout"最大公约数为:"t"n""最小公倍数为:"m*nt; return 0;}
- 输入两个正整数m和n, 求其最大公约数和最小公倍数. 1 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m – n, n – a, 继续求余 否则 n 为最大公约数 2 最小公倍数 = 两个数的积 最大公约数 #include int main() {int m, n; int m_cup, n_cup, res; *被除数, 除数, 余数* printf("Enter two integer:n"); scanf("%d %d", &m, &n); if (m 0 && n 0) { m_cup = m; n_cup = n; res = m_cup % n_cup; while (res != 0) { m_cup = n_cup; n_cup = res; res = m_cup % n_cup; } printf("Greatest common divisor: %dn", n_cup); printf("Lease common multiple : %dn", m * n n_cup); } else printf("Error!n"); return 0; } ★ 关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下: 约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。” 其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。 辗转相除法求最大公约数,是一种比较好的方法,比较快。 对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。 现在教你用辗转相除法来求最大公约数。 先用较大的75569除以52317,得商1,余数23252,再以52317除以23252,得商2,余数是5813,再用23252做被除数,5813做除数,正好除尽得商数4。这样5813就是75569和52317的最大公约数。你要是用分解使因数的办法,肯定找不到。 那么,这辗转相除法为什么能得到最大公约数呢?下面我就给大伙谈谈。 比如说有要求a、b两个整数的最大公约数,a>b,那么我们先用a除以b,得到商8,余数r1:a÷b=q1…r1我们当然也可以把上面这个式子改写成乘法式:a=bq1+r1——l) 如果r1=0,那么b就是a、b的最大公约数3。要是r1≠0,就继续除,用b除以r1,我们也可以有和上面一样的式子: b=r1q2+r2——-2) 如果余数r2=0,那么r1就是所求的最大公约数3。为什么呢?因为如果2)式变成了b=r1q2,那么b1r1的公约数就一定是a1b的公约数。这是因为一个数能同时除尽b和r1,那么由l)式,就一定能整除a,从而也是a1b的公约数。 反过来,如果一个数d,能同时整除a1b,那么由1)式,也一定能整除r1,从而也有d是b1r1的公约数。 这样,a和b的公约数与b和r1的公约数完全一样,那么……余下全文