blob: 9ca638c94c407d9dfc94f7d822f875fd056c4933 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/perl
use warnings;
use strict;
use feature qw(say);
# The numbers formed by adding one to the products of the smallest primes are
# called the Euclid Numbers (see wiki). Write a script that finds the smallest
# Euclid Number that is not prime. This challenge was proposed by Laurent
# Rosenfeld.
say scan_not_prime_euclid_number();
sub scan_not_prime_euclid_number {
my $number = 1;
my $eucid_number;
while ( not $eucid_number ) {
$eucid_number = get_euclid_number($number);
$number++;
}
return $eucid_number;
}
sub get_euclid_number {
my $num = shift;
my $product = prime_product($num);
my $eucid_number = $product + 1;
return if is_prime($eucid_number);
# Euclid Number that is not prime.
return $eucid_number;
}
sub prime_product {
my $num = shift;
my $product = 1;
map { $product *= $_ if is_prime($_); } ( 1 .. $num );
return $product;
}
sub is_prime {
my $number = shift;
return 0 if grep { $number % $_ == 0 } ( 2 .. sqrt($number) );
return 1;
}
|