Ihre Aufgabe ist es, die Primfaktoren einer Zahl aus der Eingabe zu nehmen (ohne Exponenten gleich 1) und dann die Primfaktoren aller Exponenten usw. zu nehmen, bis keine zusammengesetzten Zahlen mehr übrig sind. und geben Sie dann das Ergebnis aus.
Um das, was ich verlange, etwas klarer zu machen, hier ist ein Javascript-Programm, das dies tut, aber mit 782 Bytes ist es noch nicht sehr gut gespielt:
var primes=[2,3];
function nextPrime(){
var n=2;
while(isAMultipleOfAKnownPrime(n)){n++}
primes.push(n);
}
function isAKnownPrime(n){return primes.indexOf(n)!=-1};
function isAMultipleOfAKnownPrime(n){
for(var i=0;i<primes.length;i++)if(n%primes[i]==0)return true;
return false;
}
function primeFactorize(n){
while(primes[primes.length-1]<n)nextPrime();
if(isAKnownPrime(n)||n==1)return n;
var q=[];while(q.length<=n)q.push(0);
while(n!=1){
for(var i=0;i<primes.length;i++){
var x=primes[i];
if(n%x==0){q[x]++;n/=x}
}
}
var o="";
for(var i=2;i<q.length;i++){
if(q[i]){if(o)o+="x";o+=i;if(q[i]>1){o+="^("+primeFactorize(q[i])+")"}}
}
return o;
}
alert(primeFactorize(+prompt()));
Sie müssen die Reihenfolge der Operationen so klar wie möglich gestalten und die Primfaktoren auf jeder Ebene in aufsteigender Reihenfolge sortieren.
Sie erhalten einen Bonus von -50 Byte, wenn Sie die Ausgabe als formatierten Mathprint oder gültigen Latexcode erstellen.
2^(5^11*11^(2^7))*541).

