编程实现输入两个整数,输出其最大公约数和最小公倍数。
#include
int main(){
int a,b,num1,num2,temp;
printf("please input two number:
");
scanf("%d%d",&num1,&num2);
if(num1<num2){
temp = num1;
num1 = num2;
num2 = temp;
}
a = num1;
b = num2;
while(b!=0){ /*利用辗除法,直到b为0为止*/
temp = a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d
",a);
printf("gongbeishu:%d
",num1*num2/a);
}
扩展资料:
此题使用的是欧几里德算法,又称辗除法。
只要可计算余数都可用辗转相除法来求最大公因子,包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
利用辗转相除法方法,可以较快地求出两个自然数的最大公因数,即gcd 或叫做HCF 。
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf)
所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作gcd(8,12)=4。
参考资料:
百度百科-辗除法
#includemain(){ int m,n,i,m1,n1; while(1){ scanf("%d%d",&m,&n); m1=m;n1=n;i=m1%n1; for(;i!=0;){ m1=n1; n1=i; i=m1%n1; } printf("最大公约数 = %d
",n1); printf("最小公倍数 = %d
",m*n/n1);}}如图所示,望采纳。。。。。。
举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
代码:
#include <stdio.h>
int main(void)
{
int gcd, lcm, m, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
{ printf("m <= 0 or n <= 0");
continue;
}
for(gcd=m; gcd >= 1; gcd--){
if(m % gcd == 0 && n % gcd == 0) break;
}
lcm = m * n / gcd;
printf("%d, %d
",lcm, m, n, gcd, m, n);
}
}
运行效果:
输入输出示例:括号内为说明
输入:
3(repeat=3)
37(m=3,n=7)
244(m=24,n=4)
2418(m=24,n=18)
输出:
21,1.
24,4.
72,6.
扩展资料:
辗转相除法:
#include <stdio.h>
int main()
{
int m,n;
scanf("%d %d",&a,&b); //输入两个整数
int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量
if(a>=b) {num1=a; num2=b; }
else {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算
while(num2>0){
c=num1%num2;
num1=num2;
num2=c;}//辗转相除,num2=0时,num1=最大公因数
printf("最大公因数:%d
",num1);
printf("最小公倍数:%d
"m*n/num1);
return 0;
}
#include <stdio.h>
#include <math.h>
int gcd(int a,int b)
{
int k=1;
while (k!=0)
{k=b%a;b=a;a=k;}
return b;
}
int main()
{
int m,n,i,j,t;
printf("请输入两个正整数: ");
scanf("%d,%d",&m,&n);
if(m>n)
{t=m;m=n;n=t;}
i=gcd(m,n);
j=m*n/i;
printf("
%d和%d的最大公约数为%d,最小公倍数为%d。
",m,n,i,j);
}
执行示例:
生成的可执行文件:
举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
代码:
#include <stdio.h>
int main(void)
{
int gcd, lcm, m, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
{ printf("m <= 0 or n <= 0");
continue;
}
for(gcd=m; gcd >= 1; gcd--){
if(m % gcd == 0 && n % gcd == 0) break;
}
lcm = m * n / gcd;
printf("%d, %d
",lcm, m, n, gcd, m, n);
}
}
运行效果:
输入输出示例:括号内为说明
输入:
3(repeat=3)
37(m=3,n=7)
244(m=24,n=4)
2418(m=24,n=18)
输出:
21,1.
24,4.
72,6.
扩展资料:
辗转相除法:
#include <stdio.h>
int main()
{
int m,n;
scanf("%d %d",&a,&b); //输入两个整数
int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量
if(a>=b) {num1=a; num2=b; }
else {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算
while(num2>0){
c=num1%num2;
num1=num2;
num2=c;}//辗转相除,num2=0时,num1=最大公因数
printf("最大公因数:%d
",num1);
printf("最小公倍数:%d
"m*n/num1);
return 0;
}
#include <stdio.h>
int main (void)
{
int m, n, p, tmp;
printf ("Please type in two number:\n");
scanf ("%i %i", &m, &n); //输入两个数,分别放入m, n
p=m*n; //先把两数的积算出来,后面m和n的值会有变
while (n!=0){
tmp=m%n;
m=n;
n=tmp; //这段是求最大公约数的算法
}
15.编写程序,从键盘输人两个正整数,计算两个数的最大公约数和最小公倍...
\/\/ 输出结果 printf("最大公约数为:%d\\n", gcd);printf("最小公倍数为:%d\\n", lcm);return 0;} 程序中,首先从键盘输入两个正整数,然后使用for循环计算它们的最大公约数。在for循环中,从1到两个数中较小的数进行循环,如果两个数都能被当前循环变量整除,则将当前循环变量赋值给gcd变...
输入两个正整数,求其最大公约数和最小公倍数。
{ num1 = num2; \/\/8 7 num2 = t; \/\/7,循环继续 1 } p = p \/ num2;printf("它们的最大公约数:%d\\n", num2);printf("它们的最小公倍数:%d\\n", p);return 0;} 结果:请输入两个正整数:3,6 它们的最大公约数:3 它们的最小公倍数:6 ...
编程实现输入两个整数,输出其最大公约数和最小公倍数。
举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。代码:include <stdio.h> int main(void){ int gcd, lcm, m, n;int repeat, ri;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%d", &m);scanf("%d", &n);if(m <= 0 || n <= 0){...
编写程序,从键盘输入两个整数,调用gcd()函数求它们的最大公约数并输出...
printf("请从键盘输入du两个整数zhi:\\n");scanf("%d%d",&x,&y);printf ("它们的最大公约数是%d\\n" ,gcd ( x , y ));return 0;}
C语言 编程实现输入两个正整数,求其最大公约数和最小公倍数。
include<stdio.h>\/\/最大公约数int gcd(int a,int b){ if (a > b) { a^=b;b^=a;a^=b; } return a > 0 ? gcd (b % a, a) : b;}\/\/最小公倍数int lcm(int a, int b){ int i; if (a > b) { a^=b;b^=a;a^=b; } for ...
c++编程,输入两个正整数,输出它们的最大公约数和最小公倍数。
void){ int m,n,i,j;printf("请输入两个正整数");scanf("%d%d",&m,&n);i=(m>n?n:m);while(!(m%i==0&&n%i==0)){ i--;} printf("最大公约数:%d\\n",i);j=(m>n?m:n);while(!(j%m==0&&j%n==0)){ j++;} printf("最小公倍数:%d\\n",j);return 0;} ...
...最大公约数:输入两个正整数a和b,求它们的最大公约数.
{ int a,b,num1,num2,temp;printf("请输入两个正整数:\\n");scanf("%d,%d",&num1,&num2);if(num1<num2)\/*选出较大数*\/ { temp=num1;num1=num2;num2=temp;} a=num1,b=num2;while(b!=0)\/*辗转取余算法*\/ { temp=a%b;a=b;b=temp;} printf("它们的最大公约数为:%d...
[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1);printf("gcd=%d lcm=%d\\n", gcd, lcm...
设计一个程序,输入两个正整数,求它们的最大公约数并输出
include<stdio.h> include<stdlib.h>int Big(int n,int m){ int max = n<m?n:m;for(int i=n;i>=1;--i){ if(n%i==0 && m%i==0){ return i;} } } int main(void){ int i,j;scanf("%d",&i);scanf("%d",&j);printf("%d",Big(i,j));} ...
c语言求两个数的最大公约数
方法一:include <stdio.h> int main(){ int m = 0;int n = 0;int tmp = 0;printf("请输入两个整数: ");scanf("%d %d", &m, &n);while (tmp = m % n){ m = n;n = tmp;} printf("最大公约数为:%d\\n", n);return 0;} 方法二:include<stdio.h> include<windows.h...