mwfd.net
当前位置:首页 >> 最大公约数C语言程序 >>

最大公约数C语言程序

最大公约数算法: (1)辗转相除法 两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数的最大公约数,结束 ③ 若c≠0,则a=b,b=c,再回去执行① (2)相减法 两整数a和b: ① 若a>b,则a=a-b ② 若a<b,则b=b-a ③ 若a=b,则a(或b)即为两数的最大公约数,结束 ④ 若a≠b,则再回去执行① (3)穷举法: ① i= a b中的小数 ② 若a,b能同时被i整除,则i即为最大公约数,结束 ③ i--,再回去执行②

#include <stdio.h> void main() { int a,b,i,j; printf("请输入两个数:"); scanf("%d%d",&a,&b); if(a<b); { i=a;a=b;b=i; } for(i=b;i>1;i--) if(a%i==0&&b%i==0) break; for(j=a;;j++) if(j%a==0&&j%b==0) break; printf("\n最大公约数是:%d",i); printf("\n最小公倍数是:%d",j); }

#include int main() { int i,a,b,t; scanf("%d%d",&a,&b);//输入数a,b if(a>b)//比较a,b大小,如果a>b则交换,结果为a { t=a; a=b; b=t; } for (i = a; i >= 2; i--)//以较小的a为基数,每次i减小1循环求最大公约数 { if (a % i == 0 && b % i == 0)//如果两数

#include int main() { int m,n,c,a; scanf("%d%d",&m,&n); if(m>n) { m=m; n=n; } else { c=m; m=n; n=c; } while(n!=0) { a=m%n; m=n; n=a; } printf("最大公约数是%d\n",m);// return 0; }

int divisor (int a,int b) /*自定义函数求两数的最大公约数*/ { int temp; /*定义整型变量*/ if(a<b) /*通过比较求出两个数中的最大值和最小值*/ { temp=a; a=b; b=temp; } /*设置中间变量进行两数交换*/ while(b!=0) /*通过循环求两数的余数,直到余数为0*/ { temp=a%b; a=b; /*变量数值交换*/ b=temp; } return a; /*返回最大公约数到调用函数处*/ }

#include <stdio.h> int mymin(int a,int b) { return (a<b)?a:b; } void main() { int num1,num2=0; int key=0; ////////////////////////////////////////输入部分 key=0; printf("qiu liang ge shu de zui da gong yue shu!!\n"); do{ printf("shu ru di 1 ge shu:\t"); fflush(stdin);

#include <stdio.h>#include <stdlib.h> //使用欧氏演算法求最大公约数 int gcd(int a, int b) { if (a < b) { int t = a; a = b; b = t; } if (a % b == 0) { return b; } else { return gcd(b, a % b); } } int main() { printf("请输入两个数:\n"); int a, b; scanf("%d", &a); scanf("%d", &b); printf("最大公约数为:%d", gcd(a, b)); return 0; }

你可以编写一个程序,实现辗转相除法(欧几里得算法),来求得最大公约数,然后用两个数相乘再除以最大公约数来,得到最小公倍数. #include <stdio.h> int main() { int a, b, c; //a, b就是M和N,c是余数 int ta, tb; //用来记录a,b的临时值 int

输入两个正整数,求它的最大公约数指!#include<stdio.h>void main(){ int a,b,c,i; //c为最大公约数 printf("input a,b:\n"); scanf("%d %d\n",&a,&b); if(a>b) { for(i=b;i>=1;i--) //倒过来算,第一个就是最大公约数 if(a%i==0 && b%i==0) c=i; } else for(i=a;i>=1;i--) if(a%i==0 && b%i==0) c=i; printf("c=%d\n",c);}思路应该不复杂!编译了,没错误

你那个算法有点小问题,下面是精简代码求最大公约数代码如下:int gcd(int m,int n){return (m%n==0)?n:gcd(n,m%n);}最小公倍数代码如下int lcm(int m,int n){return (m*n/gcd(m,n));}

网站首页 | 网站地图
All rights reserved Powered by www.mwfd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com