南邮OJ 1015 最大公约数和最小公倍数

来源:互联网 发布:ipad翻墙用什么软件 编辑:程序博客网 时间:2024/05/18 00:48

题目描述:求两个正整数的最大公约数和最小公倍数

题目链接:点击打开链接

#include <iostream>using namespace std;int main(){//cout << "请输入两个正整数:" << endl;int m,n;cin >> m >> n;int a,b,c,d;if (m>=n){a = n;c = m;}else{a = m;c = n;}for (int i=1; i<=a; i++){if ((m%i == 0)&&(n%i == 0)){b = i;}}for (int j=1; j<=a; j++){if (((j*c)%m == 0)&&((j*c)%n == 0)){d = j*c;break;}}cout << b << " " << d << endl;return 0;}

思路:

1、首先搞懂最大公约数和最小公倍数的含义!最大公约数就是指:一个数首先都是指定的两个数的约数即公约数,然后在看这些公约数中的最大的数值。最小公倍数:首先得要是指定两个数的倍数,然后是这些数中最小的那个数。

2、最大公约数编程思想:首先比较两个数的大小,因为最大公约数是绝对不会超过指定两个数的最小的那个数(有点拗口),然后进行遍历,从1开始,一直到较小的那个数为止,每个数进行取余。如果是约数,那么余数一定是0。这样遍历到最后一次的时候,即为最大公约数!

3、同理,只有一点区别,求最小公倍数的时候,即第一次满足条件的时候就结束循环,这样才能求出最小公倍数(因为两个数的公倍数是无数多个的,如果不跳出循环则为死循环!)。


0 0
原创粉丝点击