c语言公约数和公倍数
❶ 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);
}
(1)c语言公约数和公倍数扩展阅读
算法思想
利用格式专输入语句将输入的两属个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。
再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。
#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以是c语言的程序语句。
❷ C语言求最大公约数和公倍数
float y=34.0000;
printf("%d\n",y);
这个的输出会是0,float输出到%d上会是0.
所以最后一行你要改为
printf("%d %d\n",z,(int)y);
❸ c语言编程:输入两个正整数,求最大公约数和最小公倍数
#include
voidmain(){
inta,b,n1,n2,t;
while(true)
{
printf("任意输入两个正整数: ");
scanf("%d%d",&n1,&n2);
if(n1
{
t=n1;
n1=n2;
n2=t;
}
a=n1;
b=n2;
while(b!=0){/*利用辗除法,直到b为0为止*/
t=a%b;
a=b;
b=t;
}
printf("最大公约数为:%d ",a);
printf("最小公倍回数为:%d ",n1*n2/a);
}}
(3)c语言公约数和公倍数扩展阅读
C语言求最答大公约数辗转相除法
#include<stdio.h>
intgcd(intm,intn);//将辗转相除的过程封装为函数,使主函数结构清晰。
intmain(void)
{
inta,b;
while(~scanf("%d%d",&a,&b)){//多组数据输入时的方式之一与while(scanf("%d%d",&a,&b)!=EOF)用途相同
printf("%d ",gcd(a,b));
return0;
}
intgcd(intm,intn)
{
returnn?gcd(n,m%n):m;//此函数将辗转相除的过程以递归的形式呈现,简化程序属于常规套路。
}
❹ C语言求两个数的最大公约数和最小公倍数
#include
#include
int
main()
{
int
a,b;
int
i,c;
printf("请输入两个正整数:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;
for(i=c;i>=1;i--)
{
if(a%i==0&&b%i==0)
{printf("最大公约数为:%d\n",i);
printf("最小公倍数为:%d\n",(a/i)*(b/i)*i);break
;}
}
return
0;
}
❺ c语言求公约数和公倍数
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intn,i,j,t,r,bcs,cs,k,l;
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d%d",&i,&j);
//去掉内了for循环容
if(i<j)
{
t=i;
i=j;
j=t;
}
else
if(i>0&&j>0)
{
bcs=i;
cs=j;
r=bcs%cs;
while(r!=0)
{
bcs=cs;
cs=r;
r=bcs%cs;
}
}
printf("%d%d ",cs,i*j/cs);
}
return0;
}
去掉了一个for循环,不知道你有什么用,现在运行正确
❻ 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语言公约数和公倍数扩展阅读:
while使用示例
C++
int a=NULL;
while(a<10)
{
a++;//自加
if(a>5)//不等while退出循环,直接判断循环
{
break;//跳出循环
}
}
结果:结束后a的值为6。
javascript
下面的例子定义了一个循环程序,这个循环程序的参数i的起始值为0。该程序会反复运行,直到i大于10为止。i的步进值为1。
<html>
<body>
<script type="text/javascript">
var i=0
while(i<=10)
{document.write("The number is"+i);
document.write("<br/>");
i=i+1;}
</script>
</body>
</html>
结果
The number is0
The number is1
The number is2
The number is3
The number is4
The number is5
The number is6
The number is7
The number is8
The number is9
The number is10
网络——while
❽ c语言,求最小公倍数和最大公约数
震惊,您的来gcd返回值为0!
return才会自返回值啊,printf是不会返回值的。这样的话d就赋值为0,然后/0就崩了。
你可以试试这个:
#include<stdio.h>
int gcd(int a,int b)
{
if(a==0)return b;
return gcd(b%a,a);
}
int a,b;
int main()
{
scanf("%d%d",&a,&b);
printf("%d\n%d",gcd(a,b),a*b/gcd(a,b));
return 0;
}
❾ C语言求最大公约数和最小公倍数
编译通过
#include<stdio.h>
int
GongyueMax(int
a,int
b)
{int
i,f;
for(i=1;i<=(a<b)?a:b;i++)
{if(a%i==0&&b%i==0){f=i;break;}}
return(f);}
int
GongbeiMin(int
c,int
d)
{int
j,g;
for(j=c*d;j>=(c>d)?c:d;j--)
{if(j%c==0&&j%d==0)
{g=j;break;}}
return(g);}
void
main()
{int
x,y,p,q;
scanf("%d,%d",&x,&y);
p=GongyueMax(x,y);
q=GongbeiMin(x,y);
printf("GongyueMax=%d,GongbeiMin=%d\n",p,q);
}
for(i=1;i<=(a<b)?a:b;i++)
和for(j=c*d;j>=(c>d)?c:d;j--)
找到要的数后要跳出循环的
❿ 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;
}
(10)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;
}