Hallo Experten,
könnt ihr mir bei meiner selbst geschriebenen Funktion helfen? Ich habe hier ein Programm geschrieben, dass die Primfaktorzerlegung einer Zahl durchführen soll. Nur sagt mir der "ach" so schlaue Server, dass ich "angeblich" durch null teile ("Fatal error: Division by zero[...] in line "). Kann mir einer sagen, warum das so ist? Wie kann ich evtl. mein Code ändern, sodass es zuverlässig funktioniert?
Er hat ein Problem bei:
PHP-Code:
[LEFT] $mod = $zahl % $pz;
[/LEFT]
PHP-Code:
[LEFT] $zahl = $zahl/$pz;
[/LEFT]
PHP-Code:
[LEFT] $mod = $zahl % $pz;
[/LEFT]
Hier mein Code:
PHP-Code:
[LEFT] function primefactor($zahl)
{
$zahl = (int)$zahl;
$pf_r = array();
$prime_array = array(
0 => 2,1 => 3,2 => 5,3 => 7,4 => 11,5 => 13,
6 => 17,7 => 19,8 => 23,9 => 29,10 => 31,
11 => 37,12 => 41,13 => 43,14 => 47,15 => 53,
16 => 59,17 => 61,18 => 67,19 => 71,20 => 73,
21 => 79,22 => 83,23 => 89,24 => 97,25 => 101,
26 => 103,27 => 107,38 => 109,29 => 113,30 => 127,
31 => 131,32 => 137,33 => 139,34 => 149,35 => 151,
36 => 157,37 => 163,38 => 167,39 => 173,40 => 179,
41 => 181,42 => 191,43 => 193,44 => 197,45 => 211,
46 => 223,47 => 227,48 => 229,49 => 233,50 => 239,
51 => 241,52 => 251,53 => 257,54 => 263,55 => 269,
56 => 271,57 => 277,58 => 281,59 => 283,60 => 293,
61 => 307,62 => 311,63 => 313,64 => 317,65 => 331,
66 => 337,67 => 347,68 => 349,69 => 353,70 => 359,
71 => 367,72 => 373,73 => 379,74 => 383,75 => 389,
76 => 397,77 => 401,78 => 409,79 => 419,80 => 421,
81 => 431,82 => 433,83 => 439,84 => 443,85 => 449,
86 => 457,87 => 461,88 => 463,89 => 467,90 => 479,
91 => 487,92 => 491,93 => 499,94 => 503,95 => 509,
96 => 521,97 => 523,98 => 541,99 => 547,100 => 557,
101 => 563,102 => 569,103 => 571,104 => 577,105 => 587,
106 => 593,107 => 599,108 => 601,109 => 607,110 => 613,
111 => 617,112 => 619,113 => 631,114 => 641,115 => 643,
116 => 647,117 => 653,118 => 659,119 => 661,120 => 673,
121 => 677,122 => 683,123 => 691,124 => 701,125 => 709,
126 => 719,127 => 727,128 => 733,129 => 739,130 => 743,
131 => 751,132 => 757,133 => 761,134 => 769,135 => 773,
136 => 787,137 => 797,138 => 809,139 => 811,140 => 821,
141 => 823,142 => 827,143 => 829,144 => 839,145 => 853,
146 => 857,147 => 859,148 => 863,149 => 877,150 => 881,
151 => 883,152 => 887,153 => 907,154 => 911,155 => 919,
156 => 929,157 => 937,158 => 941,159 => 947,160 => 953,
161 => 967,162 => 971,163 => 977,164 => 983,165 => 991,
166 => 997
);
$n = 0;
while ($zahl != 1)
{
$pz = $prime_array[$n];
$mod = $zahl % $pz;
while($mod==0)
{
$pf_r[]=$pz;
$zahl = $zahl/$pz;
$mod = $zahl % $pz;
}
$n++;
}
return $pf_r;
}
[/LEFT]
ich wäre froh wenn ich so schnell wie möglich eine Antwort bekomme, da der restliche Teil meines Programmes funktioniert (diese Funktion ist Teil einer weiteren Funktion). Bin gefühlte 30 Mal über den Quellcode gegangen und bin der Meinung, dass $pz immer gesetzt wird. Ich bin mit meinem Latein am Ende...[Blockierte Grafik: http://forum.chip.de/images/smilies/wink.gif]
Mit freundlichen Grüßen,
renske96
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!