Hvordan beregne Prime Faktorer av et heltall i Perl

Perl har ikke en forhåndsdefinert funksjon som lar deg få de viktigste faktorene for et heltall, men ved hjelp av rekursjon og base-10 tall, kan du skrive din egen funksjon for å få oppgaven. Ved hjelp av funksjonen "kart" lar deg rekursivt utføre en blokk med kode på en liste. Ved å bruke heltall som listen, kan du gjentatte ganger trekke primfaktorene fra det å få dem alle, deretter bruke "sprintf" -funksjonen for å vise dem på skjermen adskilt med mellomrom for å gjøre dem lettere å lese.

Bruksanvisning

1 Åpne et Perl program fil. Skriv inn følgende kode:

sub faktor {

for ($ i = 0; $ i <@_; $ i ++) {

$ Num = @_ [$ i];

print "De viktigste faktorene for @_ [$ i] er:";

print kartet {sprintf ( "% s", lengde), ""} GetNext (1x $ num);

skrive "\ n";

}

}

Dette skaper en enkel funksjon som heter "faktor" som tar en rekke parametere og skriver ut de viktigste faktorene, hver atskilt med et mellomrom. Det kaller "GetNext" -funksjonen til å faktisk beregne de viktigste faktorene.

2 Skriv inn følgende kode:

sub GetNext {

if ($ _ [0]! ~ /^(..+?)\1+$/) {

komme tilbake @_;

} Else {

returnere kart GetNext

($), ( "$ 1", $ [0] = ~ s / $ 1/1 / g, $ _ [0]) [0, -1];

}

}

Dette skaper "GetNext" -funksjonen, som sjekker om et heltall er et primtall. I så fall går den tilbake til nummeret i "faktor" -funksjonen som skal skrives ut. Hvis ikke, rekursivt kaller det selv for å finne den nest laveste primtall.

3 Skriv inn følgende kode:

faktor (45);

faktor (3300,24);

Disse to linjene teste funksjonen for å få primfaktorer. Den første linje har bare en parameter, slik at det bare viser én linje. Den skriver ut 3, 3 og 5 som primfaktorene. Den neste linjen blir de viktigste faktorene for to tall. For 3300, skriver den 2, 2, 3, 5, 5 og 11, og for 24, det skrives 2, 2, 2 og 3.

4 Lagre Perl program.