हार्डी-रामानुजन संख्या सामान्यीकरण


12

1729, जिसे हार्डी-रामानुजन संख्या के रूप में जाना जाता है, सबसे छोटा धनात्मक पूर्णांक है जिसे दो पूर्णांकों में दो पूर्णांक ( 12^3+1^3=10^3+9^3=1729) में सकारात्मक पूर्णांक के योग के रूप में व्यक्त किया जा सकता है । पूर्णांक को देखते हुए n(जो भी रूप में आपकी पसंद की भाषा के लिए स्वाभाविक है) सबसे छोटा धनात्मक पूर्णांक ज्ञात करें जिसे दो धनात्मक पूर्णांक के योग के रूप में व्यक्त किया जा सकता है।n में दो अद्वितीय तरीकों वें शक्ति तक है। बाहरी स्रोतों का कोई उपयोग नहीं। सबसे कम चरित्र जीतता है।

ध्यान दें कि यह वास्तव में एक अनसुलझी समस्या है n>4। उन नंबरों के लिए, अपने प्रोग्राम को हमेशा के लिए खोज में चलने दें, या कोशिश करके मर जाएँ! इसे ऐसा बनाएं कि यदि अनंत समय और संसाधन दिए जाएं, तो कार्यक्रम समस्या को हल कर देगा।


2
आप (?) " वें पावर पर उभरे दो सकारात्मक पूर्णांकों का योग" निर्दिष्ट करना चाहते हैं n। अन्यथा, 91(नहीं 1729) के n=3बाद से के लिए समाधान है 6^3+(−5)^3=4^3+3^3=91। मैंने इसे आपके विकिपीडिया लिंक से सीखा है, इसलिए हो सकता है कि आपका एचएम संदर्भ सम्मेलन द्वारा इसे अनावश्यक बना दे। चीयर्स!
डैरेन स्टोन

वास्तव में, 1पहला उपाय है:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
जॉन ड्वोरक

सुझाव के लिए धन्यवाद और संपादित करें - मेरा मतलब था 2 सकारात्मक पूर्णांक!
बेन रीच

1
@ जानवोरक, हा, हां। यह आर eal रखने!
डैरेन स्टोन

आप कहते हैं कि " लगता है ..., जैसे कि वहाँ कि पूर्णांक छोटी से छोटी सकारात्मक" है एक - लेकिन किसी के लिए n > 4, इस तरह की संख्या का अस्तित्व एक अनसुलझी समस्या । शायद आपको कहना चाहिए कि "सबसे छोटे धनात्मक पूर्णांक को खोजें ( यदि वहाँ एक है ) जो" ... यह संभव है कि "उत्तर" नगण्य छोरों हैं जो कुछ भी नहीं पाते हैं।
Res

जवाबों:


3

एपीएल  ४५  ४१

{⍺←1⋄2≤+/,⍺=(v∘.≤v)×∘.+⍨⍵*⍨v←⍳⌊⍺*.5:⍺⋄⍵∇⍨⍺+1}

41 वर्णों का छोटा लेकिन धीमा संस्करण:

{⍺←1⋄2≤+/,⍺=(v∘.≤v)×∘.+⍨⍵*⍨v←⍳⍺:⍺⋄⍵∇⍨⍺+1}

आप इसे ऑनलाइन आज़मा सकते हैं , बस फ़ंक्शन को पेस्ट कर सकते हैं और इसे एक नंबर से जोड़ सकते हैं:

      {⍺←1⋄2≤+/,⍺=(v∘.≤v)×∘.+⍨⍵*⍨v←⍳⌊⍺*.5:⍺⋄⍵∇⍨⍺+1} 2
50
      {⍺←1⋄2≤+/,⍺=(v∘.≤v)×∘.+⍨⍵*⍨v←⍳⌊⍺*.5:⍺⋄⍵∇⍨⍺+1} 3
1729

(एल्गोरिथ्म काफी गूंगा है, हालांकि उम्मीद नहीं है कि ऑनलाइन दुभाषिया n = 4 की गणना करेगा)

N = 2 का उत्तर 50 = 5² + 5² = 7² + 1 its है क्योंकि इसकी एक संख्या है कि "सकारात्मक पूर्णांक के दो वर्गों के योग के रूप में व्यक्त किया जा सकता है - दो तरीकों से अलग-अलग नहीं कहता है।"

आप अलग खंड, बस परिवर्तन जोड़ना चाहते हैं (v∘.≤v)में (v∘.<v), वर्ण की एक ही नंबर है, और n = 2 65 हो जाता है:

      {⍺←1⋄2≤+/,⍺=(v∘.<v)×∘.+⍨⍵*⍨v←⍳⌊⍺*.5:⍺⋄⍵∇⍨⍺+1} 2
65

मैं गोल्फ की पिटाई कर रहा हूँ? नहीं हो सकता !!


अच्छा! और मैं अलग पूर्णांक मतलब था, लेकिन मैं निर्दिष्ट नहीं किया, तो फिर और अधिक शक्ति! गोल्फस्क्रिप्ट के लिए ड्राइंग बोर्ड पर वापस ...
बेन रेइच

2

रूबी, 132

n=$*[r=0].to_i;while r+=1
r.times{|a|r.times{|b|next if
a**n+b**n!=r;r.times{|c|r.times{|d|puts(r)if
c**n+d**n==r&&a!=c&&a!=d}}}}end

nकमांड लाइन तर्क के रूप में पास करें । पहली पंक्ति stdoutसमाधान है।

कोड-गोल्फ के लिए अनुकूलित, प्रदर्शन नहीं। (सही ढंग से चलता है। लेकिन धीमी गति से। जरूरत से ज्यादा काम करता है।)


यहाँ एक लंबा, थोड़ा तेज C प्रोग्राम है। एक ही सही लेकिन भयानक एल्गोरिथ्म। (मुझे वास्तव में अधिक सिद्धांत का अध्ययन करने की आवश्यकता है!)

n= 2, n= 3 के लिए परीक्षण किया गया ।

सी, 234

#include<stdio.h>#include<math.h>
r,a,b,c,d;main(n){scanf("%d",&n);while(++r){for(a=0;a<r;++a){for(b=a;b<r;++b){if(pow(a,n)+pow(b,n)!=r)continue;for(c=a+1;c<r;++c){for(d=0;d<r;++d){if(pow(c,n)+pow(d,n)==r&&a!=d)printf("%d\n",r);}}}}}}

सी संस्करण nपर ले जाता है stdin। ऊपर के रूप में, पहली पंक्ति stdoutसमाधान है।


1

गोल्फक्राफ्ट 53

1\.{;\).,{}@.@\{?}+%.`{\{+}+%~}+%$.`{\{=}+,,4=}+,.!}do)

इनपुट स्टैक पर प्रारंभिक संख्या है। अंत में स्टैक के शीर्ष पर संख्या उत्तर है। मौका मिलने पर मैं इसे और विस्तार से बताऊंगा।

उदाहरण के लिए

{1\.{;\).,@.@\{?}+%.`{\{+}+%~}+%$.`{\{=}+,,4=}+,.!}do)}:f
2 f -> 25 
3 f -> 1729

यह अभी बहुत धीमी है। यह भी मायने रखता है 0(ताकि 25 के लिए जवाब है n=2, के बाद से 25=5^2+0^2=3^2+4^2। 0 की गिनती नहीं करने के लिए, (;पहले के बाद 2 वर्ण जोड़ें,

1\.{;\).,(;{}@.@\{?}+%.`{\{+}+%~}+%$.`{\{=}+,,4=}+,.!}do)

उस को खोजने के लिए 2 f=65, के बाद से65=8^2+1^2=5^2+6^2


1

GolfScript (30 वर्ण)

:N{).,{)N?}%:P{1$\-P?)},,3<}do

नोट: यह काफी धीमा है, क्योंकि यह एक प्राथमिकता कतार की तरह सुरुचिपूर्ण कुछ के बजाय एक क्रूर-बल खोज करता है। इसके बारे में सबसे सुंदर बात यह है Nकि खोज करने के लिए एक निम्न सीमा के रूप में पुन: उपयोग किया जा रहा है: यह 1^N + 2^N > Nसभी के लिए मान्य हैN

Nस्टैक पर ले जाता है, स्टैक पर संबंधित टेक्सी नंबर छोड़ देता है। Nस्टड से लेने के लिए , प्रस्तुत करना ~

इसके बाद के संस्करण की अनुमति देता है x^N + x^N(इसलिए इसके लिए N=2देता है 50)। विशिष्ट संख्या (दे जोड़ने की आवश्यकता के लिए 65बजाय), बदलने 3के लिए 4। अनुमति देने 0^N + x^N(देने 25) के लिए, )पहले तुरंत हटा दें N?


0

गणितज्ञ, ५hem वर्ण

फ़ंक्शन का उपयोग करके एक बहुत ही धीमी गति से समाधान:

0//.i_/;(D[Sum[x^(n^#),{n,1,i}]^2,{x,i}]/.x->0)/i!<4:>i+1&
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.