प्रधान बहुपद


21

एक बहुपद को देखते हुए, यह निर्धारित करें कि क्या यह प्रमुख है।

एक बहुपद है ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g, जहां प्रत्येक शब्द एक निरंतर संख्या (गुणांक) है, जिसका एक nonnegative पूर्णांक शक्ति द्वारा गुणा किया जाता है x। नॉनजेरो गुणांक वाली उच्चतम शक्ति को डिग्री कहा जाता है। इस चुनौती के लिए, हम केवल कम से कम 1 डिग्री के बहुपदों पर विचार करते हैं। अर्थात्, प्रत्येक बहुपद में कुछ होते हैं x। इसके अलावा, हम केवल पूर्णांक गुणांक वाले बहुपद का उपयोग करते हैं।

बहुपदों को गुणा किया जा सकता है। उदाहरण के लिए, (x+3)(2x^2-2x+3)बराबरी 2x^3+4x^2-3x+9। इस प्रकार, 2x^3+4x^2-3x+9में फैक्टर किया जा सकता है x+3और 2x^2-2x+3, इसलिए यह समग्र है।

अन्य बहुपद को फैक्टर नहीं किया जा सकता है। उदाहरण के लिए, 2x^2-2x+3किसी भी दो बहुपद का उत्पाद नहीं है (निरंतर बहुपद की अनदेखी या गैर-पूर्णांक गुणांक वाले)। इसलिए, यह अभाज्य है (इसे अप्रासंगिक भी कहा जाता है)।

नियम

  • इनपुट और आउटपुट किसी भी मानक तरीके से हो सकते हैं।
  • इनपुट एक स्ट्रिंग की तरह हो सकता है 2x^2-2x+3, जैसे कोफ़िक्टर्स की सूची {2,-2,3}, या किसी भी समान साधन।
  • आउटपुट या तो एक सत्य मान है अगर यह प्रमुख है, या एक गलत मूल्य अगर यह समग्र है। आपको सभी अपराधों के लिए समान सत्य मूल्य और सभी मिश्रित बहुपद के लिए एक ही गलत मूल्य प्राप्त करना चाहिए।
  • इनपुट कम से कम 1 डिग्री और अधिकतम 10 डिग्री का होगा।
  • हो सकता है कि आप (पूर्णांक या भाव के) या समीकरण को हल करने के लिए बिल्ट-इन टूल्स का उपयोग न करें।

उदाहरण

सत्य - प्रधान

x+3
-2x
x^2+x+1
x^3-3x-1
-2x^6-3x^4+2
3x^9-8x^8-3x^7+2x^3-10

मिथ्या - सम्मिश्र

x^2
x^2+2x+1
x^4+2x^3+3x^2+2x+1
-3x^7+5x^6-2x
x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12

11
कुछ त्वरित googling से यह गोल्फिंग की परवाह किए बिना एक कठिन समस्या है।
orlp

5
क्या मैं यह सोचने में सही हूं कि प्राइम से आपका मतलब इर्रिड्युसिबल है ? यदि ऐसा है तो यह मूल रूप से बहुपदीय फैक्टरिंग के बारे में इस सवाल पर एक प्रकार है , और मुझे संदेह है कि यह किसी भी उत्तर को आकर्षित नहीं करेगा जो कारक नहीं है।
पीटर टेलर

1
इस हालिया पेपर के अनुसार , " हम यह तय करने के सवाल में रुचि रखते हैं कि क्या दी गई बहुपद असाध्य है या नहीं। नतीजतन, एक साधारण परीक्षण या कसौटी जो यह जानकारी देगी वह वांछनीय है। दुर्भाग्य से, ऐसा कोई मानदंड नहीं है जो सभी पर लागू होगा। बहुपद की कक्षाएं अभी तक तैयार की गई हैं ”।
पीटर टेलर

2
@ एलेक्सा।, कई "अगर" परीक्षण हैं जो कुछ बहुपद के लिए काम करते हैं , लेकिन सवाल "अगर और केवल अगर" परीक्षण है जो सभी बहुपद के लिए काम करता है।
पीटर टेलर

1
यह एक अच्छी समस्या है! ध्यान दें कि आमतौर पर बहुपद केवल एक आधार रिंग (या फ़ील्ड) के सापेक्ष होते हैं । विशेष रूप से, यदि क्षेत्र जटिल संख्या है, तो 2 से अधिक डिग्री का कोई बहुपद नहीं है। इसलिए मैं निर्दिष्ट करूंगा कि क्या आप परिमेय (संभवत: सबसे सरल) पूर्णांक चाहते हैं (इसमें कुछ पूर्णांक फैक्टरिंग भी शामिल होंगे), या कुछ संख्या में मोडुलो। यदि मी प्राइम है, तो आसान एल्गोरिदम हैं। अन्यथा चीजें थोड़ी अधिक कठिन हैं ... (लेकिन संभव है)
कोडी

जवाबों:


3

गणितज्ञ, 224 बाइट्स

f@p_:=(e=p~Exponent~x;r=Range[⌈e/-4⌉,(e+2)/4];e<2||FreeQ[PolynomialRemainder[p,Thread@{r,#}~InterpolatingPolynomial~x,x]&/@Tuples[#~Join~-#&[Join@@Position[#/Range@Abs@#,_Integer]]&/@#]~DeleteCases~{(a_)..},0|{}]&[p/.x->r])

स्पष्टीकरण :

यहां क्रॉंकर विधि का उपयोग किया जाता है। यह विधि कुछ निचले डिग्री बहुपद और परीक्षण उत्पन्न करती है कि क्या मूल बहुपद का कोई कारक मौजूद है।

परीक्षण के मामले :

f/@{x+3, -2x, x^2+x+1, x^3-3x-1, -2x^6-3x^4+2, 3x^9-8x^8-3x^7+2x^3-10}
(* {True, True, True, True, True, True} *)

f/@{x^2, x^2+2x+1, x^4+2x^3+3x^2+2x+1, -3x^7+5x^6-2x, x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12}
(* {True, True, True, True, True} *)

मेरे लैपटॉप पर यह निष्कर्ष निकालने के लिए 14s लगते हैं कि 3x^9-8x^8-3x^7+2x^3-10यह प्रमुख है।


1

PARI / जीपी, 16 बाइट्स, नरक के रूप में सस्ते

किसी कारण से इसे अस्वीकृत नहीं किया गया (ध्यान दें कि कमांड कारक या समीकरण-हल नहीं करता है):

polisirreducible

परीक्षण का मामला

%(x^2+x+1)

रिटर्न 1(सच)। अन्य उदाहरण भी इसी तरह काम करते हैं।

लेकिन यह दिखाने के लिए कि यह कठिन तरीका है, यहाँ एक पूर्ण समाधान है।

कम सस्ता है, लेकिन sloooooooooow

वास्तव में इसका कोई मतलब नहीं है।

Beauzamy(P)=
{
  my(d=poldegree(P),s,c);
  s=sum(i=0,d,polcoeff(P,i)^2/binomial(d,i));
  c = 3^(3/2 + d);
  c *= s / (4*d*Pi);
  abs(c * pollead(P))
}
factorpol(P)=
{
  my(B=Beauzamy(P)\1, t=B*2+1, d=poldegree(P)\2, Q);
  for(i=0,t^(d+1)-1,
    Q=Pol(apply(n->n-B, digits(i,t)));
    if(Q && poldegree(Q) && P%Q==0, return(Q))
  );
  0
}
irr(P)=
{
  factorpol(P)==0
}

संपादित करें: टिप्पणीकारों ने कहा है कि पहले तरीके को अच्छे स्वाद, नियमों की भावना, जिनेवा कन्वेंशन, मानक खामियों के नियम, आदि द्वारा अस्वीकार किया जा सकता है। मैं सहमत नहीं हूं, लेकिन किसी भी मामले में मैंने दूसरा संस्करण पोस्ट किया है पहला और निश्चित रूप से यह स्वीकार्य लगता है।


1
हम्म्म्म ... मुझे पूरा यकीन है कि यह कमांड फैक्टर करता है और / या हुड के तहत समीकरणों को हल करता है। (इसके अलावा, अगर कोई चुनौती कुछ अंतर्निहित है, तो थोड़े का अर्थ है कि एक बिल्ट-इन समस्या का हल भी चुनौती की भावना में नहीं है।)
मार्टिन एंडर

@ मार्टिनबटनर: मुझे लगता है कि पहला उत्तर चुनौती के नियमों का अक्षर नहीं, बल्कि आत्मा को फिट बैठता है। इसलिए मैंने दूसरा संस्करण लिखा, जो एक वैध समाधान है। यह जांच कर सकता है कि x^4+1(जो कि किसी भी प्राइम के लिए अतिरेक मोड है) 86 मिलीसेकंड में अप्रासंगिक है। अगर और कुछ नहीं इस संस्करण को अनुकूलित और गोल्फ कर सकते हैं।
चार्ल्स

1
पहला जवाब एक खामी में आता है जो डिफ़ॉल्ट रूप से प्रतिबंधित है: काम करने के लिए अंतर्निहित कार्यों का उपयोग करना । कृपया इसे अपने उत्तर से हटा दें, या कम से कम इंगित करें कि यह एक वैध समाधान नहीं है।
इसहाक

5
@isaacg वर्तमान में एक वैध मानक खामियाजा नहीं है (वोट टूटने के कारण + 44 / -29)। चार्ल्स, यदि आप सहमत हैं कि केवल दूसरा उत्तर वास्तव में वैध है, तो आपको इसके बाइट काउंट को शामिल करना चाहिए ।
मार्टिन एंडर

@ मार्टिनबटनर: मुझे नहीं लगता - मुझे लगता है कि दोनों इस सवाल के नियम और सामान्य खामियों के धागे से वैध हैं। लेकिन मैंने इस मुद्दे को इंगित करने के लिए एक टिप्पणी जोड़ी।
चार्ल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.