一、三个数的最大公约数算法,C语言的
第一种方法: x,y,z三个数,先找出最小的,比如x; 再i=x;while(x%i!=0||y%i!=0||z%i!=0) {i--;} 最后求出的i,就是了。 第二种方法: 定义子函数int PubShu(int m,int n){int r;while(n!=0) {r=m%n;m=n;n=r;}} 其中m>n; 先x,y调用子函数求出最大公约数a; 在a,z调用子函数求出最大公约数b;即可。这样可以么
二、编程求两个数的最大公约数和最小公倍数
这题基本没有错误,但是在求最大公约数的时候,如果两个数互质,那么他们的最大公约数就是1,所以i的循环条件是i>=1
然后就是注意你定义的输入格式,需要使用逗号进行分隔,不是使用空格
代码注释给出修改位置
#include<stdio.h>
void main()
{
int i,j,n,m,max,min;
scanf(%d,%d,&m,&n);
if(n>m) i=m,j=n;
else i=n,j=m;
for(;i>=1;i--)////////////////
{
if(m%i==0&&n%i==0)
{max=i;break;}
}
for(;j<=n*m;j++)
{
if(j%m==0&&j%n==0)
{min=j;break;}
}
printf(%d,%d\n,max,min);
}运行过程截图:
三、C语言中求最大公约数的函数
#include
stdio.h
int
main()
{
int
d1,d2,r;
printf(输入两数:);
scanf(%d
%d,&d1,&d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf(最大公约数是:%d,d1);
}
//递归法
#include
stdio.h
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2);
else
return
d1;
}
int
main()
{
int
d1,d2;
printf(输入两个正整数:);
scanf(%d
%d,&d1,&d2);
printf(最大公约数是:%d,fun(d1,d2));
}
四、试编程,输入两个整数,求最大公约数和最小公倍数
代码如下:
#include <stdio.h>
int gys(int m,int n)
{int a,b,c;
if(m>n)
{a=m;
b=n;
}
else
{a=n;
b=m;
}
while(b)
{c=b;
b=a%b;
a=c;
}
return c;
}
main()
{
int x,y;
char c='y';
while(c=='y')
{
printf(input two numbers:);
scanf(%d%d,&x,&y);
printf(zui da gong yue shu :%d\n,gys(x,y));
printf(zui xiao gong bei shu :%d\n,x*y/gys(x,y));
printf(continue? y/n:);
scanf(%s,&c);
printf(\n\n);
}
return 0;
}
五、从键盘上输入两个整数,输出其中最大公约数。c语言编程实现
#include
void main() /*主程序开始*/
{
int aa,bb,a,b,c,t;
printf(请输入要求最大公约数和最小公倍数的两个整数:\n);
scanf(%d %d,&a,&b);
aa=a;
bb=b;
if(a{ t=a; a=b; b=t; } c=a%b; while(c!=0) { a=b; b=c; c=a%b; } printf(这两个数的最大公约数为:%d\n,b); printf(这两个数的最小公倍数为:%d\n,aa*bb/b); }
- 相关评论
- 我要评论
-