2016-05-10 3 views
0

Ich bin neu in Pari/gp. Ich benutze factorint, um alle Primfaktoren zu finden und es gibt eine Matrix zurück. Ich versuche, durch eine Matrix zu gehen, um die größte Zahl innerhalb zu finden, aber nicht die Länge von Zeilen und Spalten zu finden. Auch wie kann ich das if verwenden, um jedes Element höher oder niedriger zu vergleichen. Mein wird oben generiert.PARI/GP: Wie erhält man den maximalen Primfaktor der ganzen Zahl?

temp = factorint(p-1); 
num = 0; 
for(i=1, size, 
    for(j=1, size, 
     if(num <= temp[i,j], num = temp[i,j]); 
    ); 
); 

print("number is = " num); 

Vielen Dank im Voraus.

Antwort

1

Bitte beachten Sie, dass factorint(p) immer die nx2-Matrix zurückgibt, wobei n die Anzahl der Primfaktoren für p ist. Die erste Spalte ist für die Primfaktoren. Die zweite Spalte ist für ihre Multiplizitäten.

Also alles, was Sie brauchen, ist das maximale Element der ersten Spalte zu finden. Es kann wie folgt erfolgen:

factors = factorint(p-1); 
print("number is = ", vecmax(factors[, 1])); 

By the way, die Länge des Vektors v nur #v in PARI/GP ist.

+0

Kann es vorkommen, dass die maximale Primzahl nicht die in der letzten Zeile ist? Dann können Faktoren [matsize (Faktoren) [1], 1] 'verwendet werden. –

Verwandte Themen