您的位置:首页 > 其它

[Project Euler] Problem 5

2011-02-22 00:33 302 查看
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

题目的要求就是求1,2,3 ··· ··· 20的最小公倍数

我们可惜先求1,2的最小公倍数2

再求2,3的最小公倍数6

再求6,4的最小公倍数12

... ...

而求最小公倍数,我们可以用两数的积除以它们的最大公约数

最大公约数我们用辗转相除法

#include <iostream>
using namespace std;

int getLCM(int,int);
int getGCD(int,int);

int main(){
int multiple = 1;
for(int i=1; i<=20; i++){
multiple = getLCM(multiple,i);
}
cout << multiple << endl;
return 0;
}

int getLCM(int a,int b){
int c = getGCD(a,b);
return a/c*b;
}

int getGCD(int a,int b){
int tmp;
while(a%b != 0){
tmp = a;
a = b;
b = tmp%b;
}
return b;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: