您的位置:首页 > 其它

XYNUOJ 1106 1107 求最大公约数 求最小公倍数

2017-08-24 16:18 309 查看

1106: 习题7-1.1 求最大公约数

时间限制: 1 Sec  内存限制: 12 MB
提交: 63  解决: 60

[提交][状态][讨论版]

题目描述

写一个函数,求两个整数的最大公约数。通过主函数调用这个函数,并输出结果。

两个整数通过键盘输入。

输入

空格分隔的2个整数

输出

输入两数的最大公约数,单独占一行。

样例输入

8 12

样例输出

4

提示

C语言第四版教学实验-第七章 函数

#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)//找出两个数中较小的数
{
for(int i=a;i>=2;i--)//从大到小找节省时间
if(a%i==0&&b%i==0)
return 	printf("%d\n",i);  //直接return输出最大值,剩下的不会输出
}
}
另一种调用函数,没有直接求好理解

#include<stdio.h>//调用函数
int main()
{
int hcf(int,int);//声明一下
int u,v,h;
scanf("%d %d",&u,&v);
h=hcf(u,v);//h为这个函数的返回值
printf("%d",h);
return 0;
}
int hcf(int u,int v)
{
int t,r;
if(v>u)
{
t=u;u=v;v=t;//将小数给 v
}
while((r=u%v)!=0)
{
u=v;//一直取余直到r==0
v=r;
}
return(v);
}


1107: 习题7-1.2 求最小公倍数

时间限制: 1 Sec  内存限制: 12 MB
提交: 71  解决: 58

[提交][状态][讨论版]

题目描述

写一个函数求两个整数的最小公倍数,通过主函数调用这个函数,并输出结果。

两个整数由键盘输入。

输入

以空格分隔的两个整数

输出

输入两数的最小公倍数,单独占一行。

样例输入

8 12

样例输出

24

提示

C语言第四版教学实验-第七章 函数

#include<stdio.h>
int main()
{
int a,b,i;
scanf("%d %d",&a,&b);
if(a<b)
{
for(i=a;i>=2;i--)
if(a%i==0&&b%i==0)
return printf("%d\n",a*b/i);
//直接return输出小公倍数,剩下的不会输出 很好用
}
}


#include<stdio.h>
int main()
{
int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf("%d %d",&u,&v);
h=hcf(u,v);
l=lcd(u,v,h);
printf("%d",l);
return 0;
}
int hcf(int u,int v)
{
int t,r;
if(v>u)
{
t=u;u=v;v=t;
}
while((r=u%v)!=0)
{
u=v;
v=r;
}
return(v);
}
int lcd(int u,int v,int h)//在上一个函数基础上加了一个语句
{
return(u*v/h);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: