prime
changeset 2 22e93ecd595f
parent 0 1f4d150b3e3b
child 3 1519d83aa83b
equal deleted inserted replaced
1:4a09ca723f56 2:22e93ecd595f
     4 # Eine Zahl die in sämtlichen Primzahlen zerlegt wird
     4 # Eine Zahl die in sämtlichen Primzahlen zerlegt wird
     5 
     5 
     6 use strict;
     6 use strict;
     7 use warnings;
     7 use warnings;
     8 use File::Basename;
     8 use File::Basename;
     9 #use Smart::Comments;
     9 
    10 #use diagnostics;
    10 #use diagnostics;
    11 
    11 
    12 my $ME = basename $0;
    12 my $ME = basename $0;
    13 
       
    14 #n: ist die Zahl aus der die sämtlichen Primzahlen gefiltert wird
       
    15 #i: Primzahl: diese wird durch n geteilt
       
    16 
       
    17 my $number = $ARGV[0];
       
    18 
    13 
    19 if (not @ARGV) {
    14 if (not @ARGV) {
    20     # FIXME: be more verbose
    15     # FIXME: be more verbose
    21     die "$ME: Sorry, need the number\n";
    16     die "$ME: Sorry, need the number\n";
    22 }
    17 }
    23 
    18 
       
    19 my $number = $ARGV[0];
       
    20 
    24 #1. find all divisors of $number
    21 #1. find all divisors of $number
    25 my @divisors = findDivisors($number);
    22 my @divisors = findDivisors($number);
    26 
    23 
    27 #2. delete all non primes
    24 #2. delete all non primes
    28 
       
    29 my @primes = ();
    25 my @primes = ();
    30 
    26 
    31 #for each element in array divisors
    27 #for each element in array divisors
    32 foreach my $div (@divisors) { #same element in div
    28 foreach my $div (@divisors) { #same element in div
    33 
    29 
    35     my @subprimes = findDivisors($div);
    31     my @subprimes = findDivisors($div);
    36 
    32 
    37     #determine length of subprimes and save in noOfDivisors
    33     #determine length of subprimes and save in noOfDivisors
    38     my $noOfDivisors = scalar(@subprimes);
    34     my $noOfDivisors = scalar(@subprimes);
    39 
    35 
    40     #
       
    41     if ($noOfDivisors == 0) {@primes = (@primes, $div); }
    36     if ($noOfDivisors == 0) {@primes = (@primes, $div); }
    42 }
    37 }
    43 
    38 
    44 #print"Die Teile von $number sind: ".join(", ", @divisors)."\n";
    39 #print"Die Teile von $number sind: ".join(", ", @divisors)."\n";
    45 #print"Die Primzahlteile von $number sind: ".join(", ", @primes)."\n";
    40 #print"Die Primzahlteile von $number sind: ".join(", ", @primes)."\n";
    46 
    41 
    47 my @xxx = xxx($number, @primes);
    42 # not sure about the name of the function! // .hs
       
    43 @primes = factorize($number, @primes);
    48 
    44 
    49 if (@xxx) {
    45 if (@primes) {
    50     print join("*", @xxx), "\n"; 
    46     print join("*", @primes), "\n"; 
    51 }
    47 }
    52 else {
    48 else {
    53     #print STDERR "Sorry, $number is prime itself!\n";
    49     #print STDERR "Sorry, $number is prime itself!\n";
    54     warn "Sorry, $number is prime itself\n!";
    50     warn "Sorry, $number is prime itself\n!";
    55 }
    51 }
    71 	$i++;
    67 	$i++;
    72     }
    68     }
    73     return @divisors;
    69     return @divisors;
    74 }
    70 }
    75 
    71 
    76 sub xxx {
    72 sub factorize {
    77     my $current = shift @_;
    73     my $current = shift @_;
    78     my @primes = @_;
    74     my @primes = @_;
    79 
    75 
    80     my @result;
    76     my @result;
    81     foreach my $prime (@primes) {
    77     foreach my $prime (@primes) {