最大公约数最小公倍数c语言
① c语言题目最大公约数和最小公倍数
C程序,它能读入两个整数m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数
main()
{int
m,n,d,r;
printf("Please
enter
m
and
n:\n");
scanf("%d
%d",&m,&n);
if
(m<0)
m=-m;
if
(n<0)
n=-n;
if
(m<n)
{r=m;m=n;n=r;}
d=m;
while
(d%n!=0)
d+=m;
printf("%d\n",d);
do
{r=m%n;
if
(r!=0)
{m=n;n=r;}
}
while
(r!=0);
printf("%d\n",n);
}
② c语言最大公约数最小公倍数
那两个for语句使用的不对。
你的第一个for执行的条件是min能够同时整除m和n,否则跳出循环。也就是说,一旦min一上来就不能整除m和n,那么将直接跳出循环。第二个for语句也是类似的。
应该把for的循环条件改成语原来相反的条件,即((n%min)!=0)||((m%min)!=0);和((max%m)!=0)||((max%n)!=0)。并且在for与printf()中间加个“;”,要不然屏幕上会显示从min的初始值到所求结果中间所有的数字。
③ [C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
程序如下:
main(){
int a,b,r,gcd,lcm;
printf("请输入两个正整数:");
scanf("%d%d",&a,%b);
while(r=a%b){
a=b;
b=r;
}
gcd=b;
lcm=a*b/gcd;
printf("gcd=%d,lcm=%d\n",gcd,lcm);
}
就是这样。
有什么问题请留言。
④ c语言编程最大公约数最小公倍数
while(scanf("%d%d",&m,&n), m<0 || n<0); j=m; while(j/n!=0) //在这层循环中只有一条语句 j=j+m; 当j/n!=0的时候循环语句继续执行 j=j+m; //接下来我觉得程序有问题,比如说20与25代入程序:20/25=0,直接结束循环,输出 20,结果明显错误,那下一步求最小公倍数就更是错的了。 k=(m*n)/j; printf("最小公倍数是%d\n最大公约数是%d\n ",k,j); 第二道题: void main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:"); scanf("%d,%d",&n,&m); if (n<m) //此步是将大数字赋值给m {temp=n; n=m; m=temp; } p=n*m; while (m!=0) {r=n%m; //小的数字和大数字取余结果必定是原来的小数字,大和小取余结果相当于减去 小的数 n=m; //这种求公约数原理就是利用求余来减少重复相减的次数,其实也就属于辗转相除法 m=r; //辗转相除法就是对于给定的两个数,用较大的数除以较小的数,若余数不为零,则将对余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两倍的最大公约数。
⑤ c语言编程,求两个数的最大公约数和最小公倍数
这样写:
#include
void
main()
{
int
m,n,i,r,temp;
printf("请输入第一个数的值:
");
scanf("%d",&m);
printf("请输入第二个数的值:
");
scanf("%d",&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
i=n;
while(i%m!=0)
{
i=i+n;
}
printf("最小公倍数是:%d
\n",i);
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("最大公约数是:%d
\n",n);
}
图:
⑥ c语言编程求最大公约数和最小公倍数
#include<stdio.h>
int main()
{
int m,n;
int divisor,dividend,res;/*除数 被除数 余数*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循环体是三条语句,不加大括号循环只执行一条语句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return 0;
}
两数相乘除以最大公约数就是最小公倍数
⑦ c语言如何求最小公倍数和最大公约数
解题步骤:
1、求最大公约数
对两个正整数a,b如果能在区间[a,0]或[b,0]内能找到一个整数temp能同时被a和b所整除,则temp即为最大公约数。
2、求最小公倍数
对两个正整数a,b,如果若干个a之和或b之和能被b所整除或能被a所整除,则该和数即为所求的最小公倍数。
//穷举法求两数的最大公约数
int divisor(int a,int b)
{
int temp;//定义义整型变量
temp=(a>b)?b:a;//采种条件运算表达式求出两个数中的最小值
while(temp>0){
if(a%temp==0&&b%temp==0)//只要找到一个数能同时被a,b所整除,则中止循环
break;
temp--;//如不满足if条件则变量自减,直到能被a,b所整除
}
return temp;//返回满足条件的数到主调函数处
}
//穷举法求两数的最小公倍数
int multiple(int a,int b)
{
int p,q,temp;
p=(a>b)?a:b;//求两个数中的最大值
q=(a>b)?b:a;//求两个数中的最小值
temp=p;//最大值赋给p为变量自增作准备
while(1){//利用循环语句来求满足条件的数值
if(p%q==0)
break;//只要找到变量的和数能被a或b所整除,则中止循环
p+=temp;//如果条件不满足则变量自身相加
}
return p;
}
(7)最大公约数最小公倍数c语言扩展阅读:
用穷举法解题时,就是按照某种方式列举问题答案的过程。针对问题的数据类型而言,常用的列举方法一有如下三种:
(1)顺序列举是指答案范围内的各种情况很容易与自然数对应甚至就是自然数,可以按自然数的变化顺序去列举。
(2)排列列举有时答案的数据形式是一组数的排列,列举出所有答案所在范围内的排列,为排列列举。
(3)组合列举当答案的数据形式为一些元素的组合时,往往需要用组合列举。组合是无序的。
例子如下:在公元五世纪我国数学家张丘建在其《算经》一书中提出了“百鸡问题”:
“鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1。百钱买百鸡,问鸡翁、母、雏各几何?”这个数学问题的数学方程可列出如下:
Cock+Hen+Chick=100
Cock*5+Hen*3+Chick/3=100
显然这是个不定方程,适用于穷举法求解。依次取Cock值域中的一个值,然后求其他两个数,满足条件就是解。
该问题的C语言程序算法如下:
int Cock,Hen,Chick;/*定义公鸡,母鸡,鸡雏三个变量*/
Cock=0;
while(Cock<=19)/*公鸡最多不可能大于19*/
{Hen=0;
whlie(Hen<=33)/*母鸡最多不可能大于33*/
{Chick=100-Cock-Hen;
if(Cock*15+Hen*9+Chick==300)/*为了方便,将数量放大三倍比较*/
printf(" 公鸡=%d 母鸡=%d 雏鸡=%d",Cock,Hen,Chick);
Hen=Hen+1;
}
Cock=Cock+1;
}
⑧ C语言:求最大公约数和最小公倍数
#include <stdio.h>
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: %d\n", n_cup);
printf("Lease common multiple : %d\n", m * n / n_cup);
}
else printf("Error!\n");
return 0;
}
⑨ c语言中求最大公约数和最小公倍数的程序
#include <stdio.h>
int gcd(int m,int n)
{ return n?gcd(n,m%n):m;
}
int main()
{ int a,b;
scanf("%d%d",&a,&b);
printf("Gcd(%d,%d)=%d ",a,b,gcd(a,b));
printf("Lcm(%d,%d)=%d ",a,b,a*b/gcd(a,b));
return 0;
}
⑩ c语言如何求最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int a,b,c,m,t;
printf("请输入两个数: ");
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公约数是: %d ",b);
printf("最小公倍数是: %d ",m/b);
}
(10)最大公约数最小公倍数c语言扩展阅读
算法思想
利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。
再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。
#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以是c语言的程序语句。