C语言如何求两个数的最大公约数?
1.新建一个C语言源程序,使用Visual C++6.0的软件。
2.从键盘中输入两个正整数a和b。
代码:
printf(“please input two number:n”);
int a,b;
scanf(“%d%d”,&a,&b);
3.取两个数a,b中的较小值存放到变量n中。
代码:
int n=a;
if (n>b)
n=b;
4.从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数。第一个找到的整数即整数a和b的最大公约数。
代码:
for(int i=n;i>=1;i–)
{
if (a%i==0&&b%i==0)
{
printf(“最大公约数:%d n”,i);
break;
}
}
5.点击工具栏的如图图标,对源程序编译运行。
6.测试:输入4,6,得到最大公约数2。程序是正确的,读者可以测试更多的数。
7.上面步骤是编程的思路,给出完整代码,方便复制使用。
#include<stdio.h>
void main()
{
printf(“please input two number:n”);
int a,b;
scanf(“%d%d”,&a,&b);//从键盘输入两个数
int n=a;
if (n>b)
n=b;//取两个数中的较小数
for(int i=n;i>=1;i–)
{
if (a%i==0&&b%i==0)
{
printf(“最大公约数:%d n”,i);
break;
}
}
}
c语言求最大公约数?
求最大公约数可以使用辗转相除法,即不断用两个数的余数替换两个数,直到余数为0时,被除数即为最大公约数。具体步骤为:用两个数的较大值除以较小值,得到一个余数,然后再用较小值除以这个余数,得到新的余数,如此循环,直到余数为0。这时的被除数即为最大公约数。使用C语言可以通过while循环和取模运算实现。
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语言求最大公约数
- #include stdio.hint zxgbs (int n1,int n2){int y,i;for(i=n2;i=1;i–)if (n1%i==0 && n2%i==0){y=i;break;}return y;}main(){int n1,n2,t;scanf("%d %d",&n1,&n2);if (n1n2){ t=n1;n1=n2;n2=t;}printf("zxgbs=%dn",zxgbs(n1,n2));}
- 你for循环里面应该是i=1吧,你写成i=1了
C语言编程用辗转相除法(不使用递归)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。
- 【输入】输入由键盘输入,只有1行。这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“[m],[n]”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is [所求最大公约数]!”【数据范围】保证100%的数据在int范围内。跪谢大神们了。
- #include iostreamusing namespace std;void main() { int m,n,r,temp,a,b,c; cout"请输入两个数:"; cinmn; a=m;b=n; if (mn) { temp=m,m=n,n=temp; } while(n) { r=m%n,m=n,n=r; } a=m;b=m; c=a*b*m; cout"最小公倍数是:"cendl"最大公约数是:"mendl;}
C语言编程用辗转相除法(使用递归调用)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。
- 【输入】输入由键盘输入,只有1行。这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“[m],[n]”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is [所求最大公约数]!”【数据范围】保证100%的数据在int范围内。谢大神们了
- 不懂这个数据啊
c语言输入两个正整数m、n求最大公约数和最小公倍数,求大神看看我哪错
- c语言输入两个正整数m、n求最大公约数和最小公倍数,求大神看看我哪错了,第二个输出不对
- 把第二个i从最m或n(哪个最大就i=那个)开始就不会出现这种错误了.另外:我都不明白,老是有一大堆人说代码有问题,却只知发图,有些更离谱,只是用手机拍个不清不楚的图.你以为是美女咩??无图无真相呀?!发个代码不会比截图麻烦吧?至少在我而言ctrl+C,Ctrl+V 肯定比截图保存再上传快.有心想帮你也没有多少精神去看你的图中代码呀!再说了肯定是用编译器跑代码比用脑子跑容易发现并定位问题吗,特别是稍微长点的代码!!在此奉告所有那些代码有问题想问人的同学,请直接贴上代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!
C语言 ,求最大公约数,用函数。。
- 立即准备告辞曹操去寻找兄长。曹操为留住关羽设下群英会款待这位旧友
用欧几里得算法(辗转相除法)求最大公约数,C语言编程
- #include stdio.h#include stdlib.hint main(){ int m,n,a,p,q,r; printf("输入两个正整数空格分隔"); scanf("%d,%d",&m,&n); p=m; q=n; if(mn) r=m; m=n; n=r; while(m%n!=0) { a=m%n; m=n; n=a; } printf("GCD%d,%d=%dn",p,q,n); return 0;}哪里错了?希望挑错指明为什么而不是直接写好正确的。谢谢啦!
- if(mn) r=m; m=n; n=r;这里缺了点什么改if(mn){ r=n;n=m;m=r;}认同求采纳,求经验,求悬赏不认同可以问,有求必应
用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的公约数完全一样,那么……余下全文
求最大公约数 c语言
- 描述给定两个正整数,求它们的最大公约数。输入有多组数据,每行为两个正整数,且不超过int可以表示的范围。输出行对应输出最大公约数。样例输入4 88 6200 300样例输出42100我是这样写的:#includestdio.hint gcm(int x,int y){ int max,min; int temp; if(xy) { max=x; min=y; } else { max=y; min=x; } while(min!=0) { temp=max%min; max=min; min=temp; } return max;}int main(){ int a,b; int c; while(scanf("%d,%d",&a,&b)!=EOF) printf("%d",gcm(a,b)); return 0;}错在哪儿啊,为什么答案不对啊?
- #includestdio.hint fun(int a,int b){int i;for(i=a;i=1;i–){if(a%i==0&&b%i==0)return i;}}main(){ int i,n=3,a,b; for(i=0;in;i++) { scanf("%d%d",&a,&b); printf("%dn",fun(a,b)); }}自己写的您好,很高兴为您解答,流星不死为您答疑解惑如果本题还有不懂的地方请追问,望采纳我的回答。祝楼主学习进步。上面的代码可以直接复制到编译器里,带换行。