Perl nicht über eine vordefinierte Funktion , die Sie bekommen die Primfaktoren einer ganzen Zahl lässt , aber unter Verwendung von Rekursion und Base -10 Nummern können Sie Ihre eigene Funktion, um die Aufgabe zu erfüllen . Mit dem " map" -Funktion können Sie rekursiv durchführen einen Code-Block auf einer Liste. Durch die Verwendung der Zahl wie die Liste , können Sie immer wieder extrahieren Primfaktoren von ihr , um sie alle zu bekommen, dann benutzen Sie die " sprintf "-Funktion , um sie auf dem Bildschirm durch ein Leerzeichen getrennt , um sie leichter zu lesen anzuzeigen. Anleitung
1
Öffnen Sie ein Perl-Programm -Datei. Geben Sie den folgenden Code:
sub Faktor {
for ($ i = 0; $ i < @ _ ; $ i + +) {
$ num = @ _ [ ,"$ i ] ;
print " Die Primfaktoren von @ _ [$ i] sind :";
Druck map { sprintf ( "% s" , Länge ) , ""} getNext ( 1x $ num );
print "\\ n"; }
}
Dies schafft eine einfache Funktion namens " Faktor " , die eine beliebige Anzahl nimmt von Parametern und druckt die Primfaktoren , die jeweils durch ein Leerzeichen getrennt . Er fordert die " getNext "-Funktion , um tatsächlich die Berechnung der Primfaktoren
2
Geben Sie den folgenden Code: .
Sub getNext {
if ($ _ [ 0 ! ] ~ /^ (? .. +) \\ 1 + $ /) {
return @ _ ;
} else {
Rückkehr Karte getNext ($ _) , ( "$ 1" , $ _ [0] = ~ s /$ 1/1/g , $ _ [0]) [0, -1] ; }
}
Dies schafft die " getNext " -Funktion, die zu sehen, ob eine ganze Zahl ist eine Primzahl überprüft . Wenn dem so ist , gibt es die Anzahl der " Faktor "-Funktion gedruckt werden soll. Wenn nicht, es ruft sich selbst rekursiv auf die nächst niedrigere prime finden
3
Geben Sie den folgenden Code:
Faktor (45);
Faktor . ( 3300,24 );
Diese beiden Zeilen testen die Funktion Primfaktoren zu bekommen. Die erste Zeile hat nur einen Parameter , so zeigt es nur eine Zeile. Es druckt 3, 3 und 5 als Primfaktoren . In der nächsten Zeile wird die Primfaktoren für zwei Zahlen. Für 3.300 , druckt es 2, 2 , 3, 5 , 5 und 11 , und für 24, druckt es 2, 2 , 2 und 3 .
4
Speichern Sie die Perl-Programm .