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

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!