Thread Factorize that number to primes (8 answers)
Opened by data at 2004-05-03 21:01

Ishka
 2004-05-03 22:33
#81964 #81964
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Willkommen zurück.

Das hängt natürlich davon ab, wie groß deine Zahlen sind. Für kleine Zahlen geht das recht schnell:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
my $zahl=24;
my $erg=0;
my @prim=(2,3,5,7,11,13);
for(@prim){
unless($zahl % $_){
$zahl/=$_;
$erg+=$_;
redo}
}
if($zahl>1){print "mach die Primzahlenliste größer\n"}


Wenn du das bei größeren Zahlen haben willst, solltest du dir noch ne Funktion schreiben, die zur Laufzeit die Liste verlängert.

Für genügend große Zahlen dauert das allerdings ewig. Und wenn du nen Algo findest, der das schnell kann auch für große Zahlen, biste reich..
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}

View full thread Factorize that number to primes