Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Mathematische Funktionen

Beitrag: Eine Zahl in ihre Primfaktoren zerlegen

Aufgabe
Eine Zahl soll in ihre Primfaktoren zerlegt werden.

       A               B               C               D               E       
1 82.873.206  2  *  
2 41436603  3  ^5 *  
3 13812201  3  13  ^2 *  
4 4604067  3  1009   
5 1534689  3     
6 511563  3     
7 170521  13  13     
8 13117  13  13     
9 1009  1009     
10     = 2 * 3^5 * 13^2 * 1.009  
11      

Siehe dazu auch Nr.211 bei Iteration (15)

Lösung
In A1 steht die zu zerlegende Zahl.

In A2 steht:
=WENN(B1=0;1;A1/B1)
Diese Formel bis A40 runterkopieren.

In B1 steht:
{=MIN(WENN(2*(A1/ZEILE(INDIREKT("2:"&KÜRZEN(A1^0,5)))-GANZZAHL(A1/ZEILE(INDIREKT("2:"&KÜRZEN(A1^0,5)))))=0;ZEILE(INDIREKT("2:"&KÜRZEN(A1^0,5)))))} 
Diese Formel bis B40 runterkopieren.

In C1 steht:
=WENN(ZÄHLENWENN(B:B;"> 1") < ZEILE()-1;"";WENN(ZÄHLENWENN(B:B;">1")=ZEILE()-1;INDEX(A:A;ZEILE());B1))
Diese Formel bis C40 runterkopiert, enthält die Primfaktoren.

Die größte zu zerlegende Zahl ist 2^40+2^21 = 1.099.513.724.928
Da ist dann Schluss, weil 1.048.576 (2^20) die letzte Zeilenzahl ist, die als Wurzel resultieren könnte.
Vor Excel-2007 war sie 2^32+2^17 = 4.295.098.368 wegen 65.536 (2^16)

Wenn die Zahl selbst eine Primzahl ist, steht sie solo in C1.

Ergebnisdarstellung mit Exponenten
In D1 steht:
{=MIN(WENN(C$1:C$99 > 1;C$1:C$99))}
In D2 steht:
{=WENN(MAX(D$1:D1)=MAX(C:C);"";MIN(WENN(C$1:C$99 > D1;C$1:C$99)))}
D2 bis D11 runterkopieren.

In E1 steht:
=WENN(D1="";"";WENN(ZÄHLENWENN(C:C;D1)>1;"^"&ZÄHLENWENN(C:C;D1);"")&WENN(D2 <> "";" * ";""))
Bis E11 runterkopieren.

Das Ergebnis:
=WENN(A1>2^40+2^21;"Zahl ist zu groß!";WENN(UND(C1=A1;A1>1);"Primzahl";"= "&TEXT(D1;"#.###")&E1&TEXT(D2;"#.###")&E2&TEXT(D3;"#.###")&E3&TEXT(D4;"#.###")&E4&TEXT(D5;"#.###")&E5&TEXT(D6;"#.###")&E6&TEXT(D7;"#.###")&E7&TEXT(D8;"#.###")&E8&TEXT(D9;"#.###")&E9&TEXT(D10;"#.###")&E10&D11&E11))

Erläuterung
Mehr als 11 verschiedene Primfaktoren können nicht vorkommen.
=2*3*5*7*11*13*17*19*23*29*31 ergibt 200.560.490.130
Zusätzlich noch *37 wären über 7 Billionen - hier also zu groß.

B1 kann man mit der Funktion REST auch kürzer fassen zu:
{=MIN(WENN(REST(A1;ZEILE(INDIREKT("2:"&KÜRZEN(A1^0,5))))=0;ZEILE(INDIREKT("2:"&KÜRZEN(A1^0,5)))))} 
Wegen einer Macke in dieser Funktion vor Excel-2007 wäre die größte zu zerlegende Zahl dort dann aber nur 2^28-1 = 268.435.455
Ist jetzt anscheinend behoben ?