어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
제곱근을 나타내기 위해 모듈을 써봤습니다.
사실 0.5제곱이랑 같기 때문에 사용할 이유는 없습니다만, 앞으로 사용하게 될 수많은 모듈을 사용하기에 앞서 워밍업처럼 한번 사용해봤습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/usr/bin/env perl use 5.010; use strict; use warnings; use Math::Complex; my $a = 0; my $b = 600851475143; my $sqrtb = int(sqrt(600851475143)); foreach (2..$sqrtb) { while ($b%$_ == 0) { $b /= $_; $a = $_ ; } } say $a; |