宋睿


私信TA

用户名:dotcpp0656530

访问量:1299

签 名:

等  级
排  名 1469
经  验 2761
参赛次数 16
文章发表 8
年  龄 13
在职情况 学生
学  校 大庆一中
专  业

  自我简介:

解题思路:

先想一想,m和n的公约数要满足什么条件?

m%b==0&&n%b==0

那么“最大”呢?

for(b=1000000/*其实任意一个大于m和n的数均可*/;;b--)

以此类推,也可以得出m和n的最小公倍数。

for(s=1/*注意不能是0*/;;s++)
s%m==0&&s%n==0

大家可能已经注意到了,上面的循环中没有写循环条件。这是因为事先不知道需要循环到几,需要使用穷举的方法,在找出答案后用break中止即可。

注意事项:
虽然break和return 0都能中止循环,但return 0的作用是中止整个程序,因为要用两个循环分别算出m和n的最小公倍数和最大公约数,如果全部中止,就只能算出一个。

参考代码:

#include <iostream>
 
using namespace std;
 
int main()
{
    int b,s,m,n;
    cin>>m>>n;
    for(b=100000000;;b--)
    {
        if(m%b==0&&n%b==0)
        {
            break;
        }
    }
    for(s=1;;s++)
    {
        if(s%m==0&&s%n==0)
        {
            break;
        }
    }
    cout<<b<<' '<<s<<endl;
    return 0;
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

好啊
2023-07-18 17:05:22
6
2023-07-11 18:02:24
  • «
  • 1
  • »