Project Euler 5

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 number that is evenly divisible by all of the numbers from 1 to 20?
2520は1から10までの全ての整数の最小公倍数である。
1から20までの全ての整数の最小公倍数を求めなさい。

Mathematica

Apply[LCM, Range[20]]

またしても1行で終わってしまいました。Mathematicaの威力を知ることができますね。

C/C++

#include <iostream>
using namespace std;

int gcd(int,int);
int lcm(int,int);

int main(){
int ans=1;

	for(int i=1 ;  i<=20 ;  i++){
		ans = lcm(ans, i);
	}
	cout << ans << endl;
}

// 最大公約数
int gcd( int m, int n )
{
	// 引数に0がある場合は0を返す
	if ((0==m) || (0==n)) return 0;
	
	// ユークリッドの方法
	while( m != n ){
		if ( m > n ) m -= n;
		else         n -= m;
	}
	return m;
}

// 最小公倍数
int lcm( int m, int n ){
	// 引数に0がある場合は0を返す
	if ((0==m) || (0==n)) return 0;
	return ((m / gcd(m, n)) * n); // lcm = m * n / gcd(m,n)
}

gcdとlcmググってコピペ余裕でした