输入两个正整数m和n,输出它们的最小公倍数和最大公约数。

作者&投稿:敛官 (若有异议请与网页底部的电邮联系)
C++实现输入两个正整数m和n,求其最大公约数和最小公倍数?~

#include "stdio.h"
void main()
{
int m,n,i,c;
printf("请输入两个正整数
");
scanf("%d %d",&m,&n);
c = m < n ? m : n ; // 取m n 中较小的数,赋值给c //
for(i = 2 ; i <= c ; i++)
{
if( m % i == 0 && n % i == 0)
{
printf("m 与 n 的最大公约数为%d,",i);
break;
}
}
if(i == c+1)
printf("没有最大公约数 ");
c = m > n ? m : n ; // 取 m n 中较大的数,赋值给c //
for (i = c ; i <= m*n; i++)
{
if ( i % m ==0 && i % n ==0)
{
printf("最小公倍数为%d.
",i);
break;
}
}
}

扩展资料:总结
1)两个数求最大公约数,分别把两个数除以i取余数等于0,这是i就是这个两个数的
最大公约数,i从2开始递增到mn中较小的那个数。若递增到mn中较小的数,仍除不出来。
则没有最小公倍数。
2求两个数最小公倍数,把mn中较小的数赋值给i。i自增到m*n(因为必定存在一个公倍数为m*n)
若mn都满足除i取余数都等于0说明,i是mn的倍数。输入出mn程序结束。

注意要点
1、标点符号都使用英文的,不要出现中文的
2、int型数据输入用%d
3、根据scanf中的输入格式要求,输入的时候用逗号分隔输入的两个数
#include int main(int argc, char*argv[]){ int x,y,t,z,k;scanf("%d,%d",&x,&y);k=x*y; if(x<y) { t=x; x=y; y=t; } while(x%y!=0) { z=x%y; x=y; y=z;} printf("最小公约数为"); printf("%d
",y);t=k/y;printf("最小公倍数为"); printf("%d
",t); return 0;}

#include<stdio.h>

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){

temp = a%b;

a=b;

b=temp;

}

printf("gongyueshu:%d
",a);

printf("gongbeishu:%d
",num1*num2/a);

}

扩展资料:

两个整数的最大公约数主要有两种寻找方法:

* 两数各分解质因数,然后取出同样有的质因数乘起来

*辗转相除法(扩展版)

和最小公倍数(lcm)的关系:

gcd(a, b) * lcm(a, b) = ab

a与b有最大公约数,

两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。

两个整数的最大公因子和最小公倍数中存在分配律:

* gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))

* lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c))

在坐标里,将点(0, 0)和(a, b)连起来,通过整数坐标的点的数目(除了(0, 0)一点之外)就是gcd(a, b)。



#include<stdio.h>
int main()
{
//这是逻辑很简单的一种实现,不过效率很低,不推荐,但是可以作为参考
int p=0,q=0;
//这是需要做求他们公约数和公倍数的两个数据
int m=-1,n=-1;
//m,公约数;n,公倍数;设置初始值为-1是有考虑的。
int i=0;
//兼具循环控制和传值两个功能;

printf("输入要计算他们公约数和公倍数的两个整数\n");
scanf("%d",&p);
scanf("%d",&q);

for(i=p>q?q:p ; i>=1; --i )
{
if(p%i==0) //i是p的约数;
{
if(q%i==0) //i也是q的约数;
{
m=i;
break;
}
}
}
n=p*q/m;
printf("%d和%d的最大公约数是%d,最小公倍数是%d",p,q,m,n);
return 0;
}

//这是穷举法,从两个数中较小的那个数逐一尝试,是一种直观的实现方法。条试过了,可以运行正确。

用辗转相处求出两个数的最大公约数,然后就最大公约数*(a/最大公约数)*(b/最大公约数)

b=m*n;
while(m!=n)
{
if(m<n)
n=n-m;
else
m=n-n;
}
c=b/m;
printf("%d %d\n",m,c);
else部分替换成如上

思路有些乱,可以用辗转相除法~


.输入两个正整数m和n,求其最大公约数和最小公倍数。
if(n<m)\/\/把大数放在n中,把小数放在m中.{temp=n;n=m;m=temp;} p=n*m;\/\/P是原来两个数n,m的乘积.while(m!=0)\/\/求两个数n,m的最大公约数.{ r=n%m;n=m;m=r;} printf("Its MAXGongYueShu:%d\\n",n);\/\/打印最大公约数.printf("Its MINGongBeiShu:%d\\n",p\/n);打印最...

输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数...
include <stdio.h>int IsPrime(int i){ int j=0; for(j=2;j<i;j++){ if(0==(i%j)){ return 0; } }return 1;}void main(){int m,n,i;scanf("%d %d",&m,&n);for(i=m+1;i<n;i++)if(IsPrime(i)==1)printf("%d ",i);} include <stdio.h>int...

C语言函数 【问题描述】输入2个正整数m和n(m>1,n<=500),统计并输出m...
r=1; for ( i=2;i<=m\/2;i++ ) if ( m%i==0 ) {r=0;break;} return r;}void main() { int m,n,i,k,s; scanf("%d,%d",&m,&n); k=s=0; for ( i=m;i<=n;i++ ) if ( prime(i) ) { k++; s+=i; } printf("count=%d,sum=%d\\n",k,s);} ...

输入两个正整数n和m(m<10),将其转换为m进制后输出。要求定义并调用函数...
Dectoo 函数参数1,是要转换的十进制数,参数二是 进制,小于10,参数三是 整型指针,指向 转换后的数存放的数组, 参数四是整型指针,返回转换后的数码位数。include <stdio.h> void Dectoo(int x, int base, int *r ,int *k){ int n=0,i,t;while (x>=1){ r[n]=x%base;x=x\/...

编写程序,输入两个正整数m和n,输出m和n之间的素数并统计素数的个数...
2、在窗体上添加控件:lable控件,text值为“输入一个数,判断是否是素数”;一个textbox控件(tb_inputvalue),用来输入要判断的素数。3、素数设计算法。4、素数设计算法:取消检测区间,提高程序效率。我们可以只判断2到n\/2之间的数,就可以知道他是不是素数了。5、获取前100之间的所有素数:从2到...

输入两个正整数m和n,求其最大公约数和最小公倍数c语言
include<stdio.h> main(){ int m,n,a,b,t,temp,h;printf("输入m和n\\n");scanf("%d%d",&m,&n);a=m;b=n;if(a

C语言编程:输入两个正整数m和n,求它们的最大公约数。
include <stdio.h> int gcd(int a,int b){ if(a%b)return gcd(b,a%b);return b;} int main(){ int m,n;scanf("%d%d",&m,&n);printf("%d\\n",gcd(m,n));return 0;}

.输入两个正整数m和n,求其最大公约数和最小公倍数
最大公因数n和最小公倍数mn

输入两个正整数m和n,求最大公约数和最小公倍数
这个程序采用的是辗转相除法。规则为:1) n 和 m (n>m) 的最大公约数等于 m 和 n%m 的最大公约数。2) 当 m为0 时,这时的 n 为 开始时的 n 和 m 的最大公约数

输入两个正整数N和M,求最大公约数和最小公倍数?高手帮忙呀!用C语言...
分析:求最大公约数的算法思想:(最小公倍数=两个整数之积\/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如: 求 m=14 ,n=6 的最大公约数....

永州市13169466886: 输入两个正整数m和n,求它们的最大公约数和最小公倍数.(习题6.1) -
司狭小儿:[答案] 输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m 0) { m_cup = m; n_cup = n; res = m_cup % n_cup; while (res != 0) { m_cup = n_cup; n_cup = re...

永州市13169466886: JAVA编程 输入两个正整数m和n,输出它们的最小公倍数和最大公约数不要改变与输入输出有关的语句import java.util.*;public class Test40014 {public static ... -
司狭小儿:[答案] import java.util.*; public class Test40014 { public static void main(String []args){ Scanner in =new Scanner(System.in); int gcd, lcm, m, n,r; int repeat, ri; repeat=in.nextInt(); for(ri = 1; ri

永州市13169466886: 输入俩个正整数m和n,输出它们的最小公倍数和最大公约数 c语言 -
司狭小儿: }while(m<0||n<0); 这个判断?你输入m和n都是正整数的时候是跳不出来的 但是跳出来的时候m或n有一个是负的了

永州市13169466886: 编写程序,输入两个正整数m和n,输出它们的最小公倍数和最大公约数 -
司狭小儿: #include using namespace std; int gun(int a, int b) { int i = (a while(i>=2) { if(a%i==0 && b%i==0) return i; i--; } return 1; } int hun(int a, int b) { int i = (a>b)?a:b; while(i { if(i%a==0 && i%b==0) return i; i++; }return (a*b); } int main() { int a,b; cout cin>>a>>b; cout cout return 0; } 不明白我可以在线回答

永州市13169466886: C语言编程:输入两个正整数m和n,求它们的最大公约数
司狭小儿: main() { int a,b,num1,num2,temp; printf("请输入两个正整数:\n"); scanf("%d,%d",&num1,&num2); if(num1

永州市13169466886: 在主函数中由键盘输入两个正整数m和n,写两个函数分别求取它们的最大公约数和最小公倍数,在主 -
司狭小儿:[答案] input int m,n; int p=m,q=n,t; while(t!=0) { t=p%q; p=q; q=t; } int MaxGys=p; int MinGbs=m*m/p;

永州市13169466886: 设计一个C程序解决这个题:输入两个正整数m和n,求其最大公约数和最小公倍数.写出完整的程序 -
司狭小儿:[答案] #include void main() { int a,b,m,n,p,t; printf("请按顺序输入a和b\n"); scanf("%d,%d",&a,&b); p=a*b; do {m=a%b;t=b;a=b;b=m; } while(m!=0); n=p/t; printf("a和b的最大公约数是%d\n最小公倍数是%d\n",t,n); }...

永州市13169466886: 输入两个正整数m和n,求其最小公倍数? -
司狭小儿:[答案] 如果m和n的最大公因数是1,则m和n最小公倍数=m*n=mn. 如果m和n的最大公因数是a,则m和n最小公倍数=m*n÷a=mn/a. 如果m是n的倍数,则m和n最小公倍数为m. 如果n是m的倍数,则m和n最小公倍数为n.

永州市13169466886: :输入两个正整数m和n,求出它们的最大公约数和最小公倍数. -
司狭小儿: #include"stdio.h" void main() { int m,n,r,tm,tn; scanf("%d%d",&n,&m); if(m<n); { r=n; n=m; m=r; } tm=m; tn=n; r=m%n; while(r) { m=n; n=r; r=m%n; } printf("%d,%d\n",n,tm*tn/n); } scanf那少了%d.if加{},逻辑错误.赋值放在scanf后面.

永州市13169466886: c语言 输入2个正整数m,n,输出它们的最小公倍数和最大公约数. -
司狭小儿: 注意要点1、标点符号都使用英文的,不要出现中文的2、int型数据输入用%d3、根据scanf中的输入格式要求,输入的时候用逗号分隔输入的两个数#include <stdio.h> int main(int argc, char*argv[]) { int x,y,t,z,k; scanf("%d,%d",&x,&y); k=x*y; if(x<y) { t=x; x=y; y=t; } while(x%y!=0) { z=x%y; x=y; y=z;} printf("最小公约数为"); printf("%d\n",y); t=k/y; printf("最小公倍数为"); printf("%d\n",t); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网