Công việc của bạn là lấy các thừa số nguyên tố của một số được lấy từ đầu vào (bỏ qua bất kỳ số mũ nào bằng 1) sau đó lấy các thừa số nguyên tố của tất cả các số mũ, v.v., cho đến khi không còn số tổng hợp nào; và sau đó xuất kết quả.
Để làm cho những gì tôi yêu cầu rõ ràng hơn một chút, đây là một chương trình javascript thực hiện nó, nhưng, ở mức 782 byte, nó chưa được chơi tốt lắm:
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()));
Bạn được yêu cầu sắp xếp thứ tự các thao tác càng rõ ràng càng tốt và sắp xếp các thừa số nguyên tố theo thứ tự tăng dần theo từng cấp độ.
Bạn nhận được phần thưởng -50 byte nếu bạn tạo đầu ra dưới dạng toán học được định dạng hoặc mã latex hợp lệ.
2^(5^11*11^(2^7))*541
).