Problem Primfaktorzerlegung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Problem Primfaktorzerlegung

      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