17 die "$ME: Sorry, number >= 2 expected!\n" |
17 die "$ME: Sorry, number >= 2 expected!\n" |
18 if $number < 2; |
18 if $number < 2; |
19 |
19 |
20 #1. find all divisors of $number |
20 #1. find all divisors of $number |
21 my @divisors = findDivisors($number); |
21 my @divisors = findDivisors($number); |
22 print "Die Teiler von $number sind: @divisors\n"; |
22 |
|
23 #print "Die Teiler von $number sind: @divisors\n"; |
23 |
24 |
24 #2. delete all non primes |
25 #2. delete all non primes |
25 my @primes = findPrimes(@divisors); |
26 my @primes = findPrimes(@divisors); |
26 print "Die Primzahlteile von $number sind: @primes\n"; |
27 |
|
28 #print "Die Primzahlteile von $number sind: @primes\n"; |
27 |
29 |
28 # not sure about the name of the function! // .hs |
30 # not sure about the name of the function! // .hs |
29 @primes = factorize($number, @primes); |
31 @primes = factorize($number, @primes); |
30 |
32 |
31 if (@primes) { |
33 print join("*", @primes), "\n"; |
32 print join("*", @primes), "\n"; |
|
33 } |
|
34 else { |
|
35 warn "Sorry, $number is prime itself!\n"; |
|
36 } |
|
37 |
34 |
38 exit; |
35 exit; |
39 |
36 |
40 #### SUBROUTINES ##### |
37 #### SUBROUTINES ##### |
41 |
38 |
42 sub findDivisors { |
39 sub findDivisors { |
43 my $i = 2; |
40 my $i = 2; |
44 my $m = $_[0]; |
41 my $m = $_[0]; |
45 |
42 |
46 my @divisors = (); |
43 my @divisors; |
47 |
44 for (my $i = 2 ; $i <= $m ; $i++) { |
48 while ($i < $m) { |
|
49 if ($m % $i == 0) { |
45 if ($m % $i == 0) { |
50 @divisors = (@divisors, $i); |
46 push @divisors, $i; |
51 } |
47 } |
52 $i++; |
|
53 } |
48 } |
54 return @divisors; |
49 return @divisors; |
55 } |
50 } |
56 |
51 |
57 sub findPrimes { |
52 sub findPrimes { |