Herhangi bir yerleşik faktoring / polinom fonksiyonu kullanmadan, bir polinomu tamsayılar veya sonlu bir alan üzerinde indirgenemez hale getirin.
Giriş
Program / fonksiyonunuz n
girdi olarak bir miktar asal (veya sıfır) sayı alacaktır . Alan / halka bu sırayla (yani sonlu alanı Z/nZ
), ya da sadece Z
, eğer n
bir 0
. Değilse veya asalsa n
, programınız başarısız olabilir 0
. Polinom içeride olacak F[x]
.
Programınız / fonksiyonunuz da polinomu girdi olarak alır.
Girişte bir miktar esneklik var, girişi nasıl almak istediğinizi belirttiğinizden emin olun. Örneğin, polinom katsayıların bir listesi olarak veya çoğu insanın beklediği biçimde (ör .:) 50x^3 + x^2
veya başka bir makul biçimde girilebilir . Veya alanı / zili girme biçimi de farklı olabilir.
Çıktı
Programınız / fonksiyonunuz polinom faktörlü olarak çıktı verecektir. Birden fazla kökü genişletilmiş olarak bırakabilirsiniz (yani (x + 1)(x + 1)
yerine (x + 1)^2
). İkili işleçler arasındaki boşlukları kaldırabilirsiniz. Yan yana ile değiştirebilirsiniz *
. Garip yerlere boşluk ekleyebilirsiniz. Faktörleri istediğiniz sıraya göre yeniden sıralayabilirsiniz. x
Terim sadece olabilir (x)
. x
olarak yazılabilir x^1
; Ancak sabit terim olmayabilir var x^0
. Yabancı +
işaretlere izin verilir. Sen olmayabilir bir bir terim var 0
önünde, onlar gerekir dışarı bırakılabilir. Her faktörün başterim gerekir pozitif, negatif belirtiler dışında olmalıdır.
Test senaryoları, programınızın bunlardan her biri için makul sürede çıktı üretebilmesi gerekir (örneğin, <= 2 saat):
Giriş: 2, x^3 + x^2 + x + 1
Çıktı: (x + 1)^3
Giriş: 0, x^3 + x^2 + x + 1
Çıktı: (x + 1)(x^2 + 1)
Giriş: 0, 6x^4 – 11x^3 + 8x^2 – 33x – 30
Çıktı: (3x + 2)(2x - 5)(x^2 + 3)
Giriş: 5, x^4 + 4x^3 + 4x^2 + x
Çıktı: x(x + 4)(x + 4)(x + 1)
Giriş: 0, x^5 + 5x^3 + x^2 + 4x + 1
Çıktı: (x^3 + 4x + 1)(x^2 + 1)
Test davalarımı eleştirdiği için Peter Taylor'a özel teşekkürler
p
elementlere sahiptir {0, 1, ... , p-1}
ve toplama / çarpma modu altındadır p
. Temel olarak, herhangi bir katsayıyı mod p
ile azaltın ve iyisiniz. Ayrıca, eğer bir köke, yani doğrusal faktöre sahipse , polinom içine takıldığında bunlardan birinin (mod ) {0, ... , p-1}
üreteceğini unutmayın . 0
p
Z
etmektir . Bununla birlikte, golf edilebilir yaklaşım muhtemelen (ve bu kesinlikle baktığım yoldur) faktörlerin yüksekliği ve kaba kuvvet üzerinde basit bir sınır kullanmaktır. Z/pZ
p