रैकेट , 83 79 बाइट्स
(λ(n)(cadr(argmax cadr((let()(local-require math/number-theory)factorize)n))))
इसे ऑनलाइन आज़माएं!
(मुझे यकीन नहीं है कि क्या एक पूर्ण रैकेट समाधान का गठन करने पर आम सहमति है, इसलिए मैं गणितज्ञ सम्मेलन के साथ जा रहा हूं जो एक शुद्ध फ़ंक्शन मायने रखता है।)
यह काम किस प्रकार करता है
factorize
जोड़े की एक सूची के रूप में कारककरण (factorize 108)
देता है : देता है '((2 2) (3 3))
। एक जोड़ी का दूसरा तत्व द्वारा दिया जाता है cadr
, car
(किसी सूची के प्रमुख) की रचना के लिए एक आशुलिपि (एक सूची की cdr
पूंछ)।
मुझे लगता (cadr (argmax cadr list))
है कि दूसरे तत्वों की अधिकतम संख्या को खोजने के लिए मूर्खतापूर्ण काम कर रहे हैं, लेकिन max
सूचियों पर काम नहीं करता है: (max (map cadr list))
हम जो चाहते हैं वह नहीं करते हैं। मैं रैकेट का विशेषज्ञ नहीं हूं, इसलिए शायद ऐसा करने के लिए एक मानक बेहतर तरीका है।
रैकेट, 93 बाइट्स
(λ(n)(define(p d m)(if(=(gcd m d)d)(+(p d(/ m d))1)0))(p(argmax(λ(d)(p d n))(range 2 n))n))
इसे ऑनलाइन आज़माएं!
यह काम किस प्रकार करता है
एक वैकल्पिक संस्करण जो आयात नहीं करता है factorize
और इसके बजाय सब कुछ खरोंच से, कम या ज्यादा करता है। फ़ंक्शन उस विभाजन (p m d)
की उच्चतम शक्ति पाता है और फिर हम केवल बीच और के लिए उच्चतम मूल्य पाते हैं । (हमें इसे केवल अपराधों तक सीमित रखने की आवश्यकता नहीं है, क्योंकि एक समग्र शक्ति नहीं होगी जो प्रधान शक्तियों से बेहतर काम करती है।)d
m
(p n d)
d
2
n