老铁,我做的对吗?


私信TA

用户名:uq_58104230559

访问量:2348

签 名:

人充满劳绩,但还诗意的栖居于大地之上。

等  级
排  名 22934
经  验 644
参赛次数 0
文章发表 7
年  龄 19
在职情况 学生
学  校
专  业

  自我简介:

解题思路:利用循环逆着求出最大公因数,结束循环

双重循环,一个数的倍数必然不大于所求的另一个数;

注意事项:一定不要忘记数据类型是长整型。QAQ

参考代码:

#include <stdio.h>

#include <math.h>

int gys(long a,long b)

{long i;

for(i=a;i>0;i--)

    if(a%i==0&&b%i==0)break;//最大公倍数比较简单,直接用循环倒着求出公因数,然后结束循环

return i;

}

int gbs(long c,long d)

{long j,k;

for(j=1;j<=d;j++){//二重循环,最小公倍数一定是不大于两数乘积的

for(k=1;k<=c;k++){

if(c*j==d*k) 

return c*j;}}}//记得在函数末尾返回值,也可以直接输出,就不用最后的printf函数了

int main()

{

long m,n;

scanf("%d%d",&m,&n);

printf("%ld %ld\n",gys(m,n),gbs(m,n));

return 0;

}


 

0.0分

3 人评分

  评论区

只用整型做也是对的
2020-08-03 14:52:12
长整型?
2020-08-03 14:51:15
  • «
  • 1
  • »