Herhangi bir yerleşik faktoring / polinom fonksiyonu kullanmadan, bir polinomu tamsayılar veya sonlu bir alan üzerinde indirgenemez hale getirin.
Giriş
Program / fonksiyonunuz ngirdi 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 nbir 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^2veya 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. xTerim sadece olabilir (x). xolarak 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
pelementlere sahiptir {0, 1, ... , p-1}ve toplama / çarpma modu altındadır p. Temel olarak, herhangi bir katsayıyı mod pile 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 . 0p
Zetmektir . 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/pZp