Ryley Teoremi


13

S. Ryley, 1825'te teoremi izledi:

Her rasyonel sayı üç rasyonel küpün toplamı olarak ifade edilebilir.

Meydan okuma

Bazı rasyonel sayı verilen üç rasyonel numaraları bulmak , öyle kirQa,b,cQ

r=a3+b3+c3.

ayrıntılar

Gönderiminiz, yeterli zaman ve bellek verilen her giriş için bir çözüm hesaplayabilmelidir, yani örneğin intbir kesri temsil eden iki adet 32 ​​bit olması yeterli değildir.

Örnekler

30=3982933876681363660054951533977505554546352=607029013173+2396129245436192271286533071728=(12)3+(13)3+(14)30=03+03+031=(12)3+(23)3+(56)342=(1810423509232)3+(1495210609)3+(25454944)3


1
Japt'te böyle bir şey çalıştım, ama genellikle "çok fazla özyineleme" hatasıyla karşılaştı. Muhtemelen strateji "rastgele sayılar alın, doğru bir cevap olana kadar tekrar deneyin".
Kamil Drakari

1
Bignum desteğine gereksinim duymak gereksiz bir çok dili dışlar ve / veya bunları uygulamak için çok fazla boyanmış kazan plakası gerektirir
Sparr

2
@Sparr Bu, kasıtlı bir seçimdi, çünkü çıktı basit girdiler için bile oldukça "büyük" olabilir ya da hangi yöntemi kullandığınıza bağlı olarak, hesaplamadaki ara değerler de çok büyük olabilir. Bu nedenle, rasgele kesinlik sayılarıyla çalışmak bu zorluk için önemli bir noktaydı (ve muhtemelen diğer sayı teorisi zorluklarında da).
flawr

1
Çıktı kabul edilebilir mi [p1,p2,p3,q], ? (p1q)3+(p2q)3+(p3q)3
Arnauld

Benzer bir damar boyunca, çıkarılan üç rasyonel sayının en basit biçimde olması gerekir mi?
Quintec

Yanıtlar:


10

Pari / GP , 40 bayt

r->[x=27*r^3+1,9*r-x,z=9*r-27*r^2]/(3-z)

Çevrimiçi deneyin!


Aynı uzunluk, aynı formül:

r->d=9*r^2-3*r+1;[x=r+1/3,3*r/d-x,1/d-1]

Çevrimiçi deneyin!


Bu formül, Richmond, H. (1930) 'da verilmiştir. Akılcı Çözümler . Edinburgh Matematik Derneği Bildirileri, 2 (2), 92-100.x3+y3+z3=R

r=(27r3+127r29r+3)3+(27r3+9r127r29r+3)3+(27r2+9r27r29r+3)3

Çevrimiçi kontrol edin!


1
-5 bayt, çünkü summandların sırasını değiştirebilirsiniz
Black Owl Kai

1
@SiyahOwlKai İkinci toplamanın payı , . 27r3+9r127r2+9r1
alephalpha

8

Haskell , 95 89 76 69 68 bayt

f x=[w|n<-[1..],w<-mapM(\_->[-n,1/n-n..n])"IOU",x==sum((^3)<$>w)]!!0

Çevrimiçi deneyin!

Basit bruteforce çözümü. biçimindeki tüm rasyonel sayıların üç

(a1n,a2n,a3n)with nainn.

  • Her zaman üç rasyonel sayının aynı paydaya sahip olduğunu varsayabiliriz, çünkü
    (a1n1,a2n2,a3n3)=(a1n2n3n1n2n3,a2n1n3n1n2n3,a3n1n2n1n2n3).
  • Biz her zaman varsayabiliriz beri, herhangi keyfi büyük tamsayı için .nainn
    ain=aiNnN
    N

"IOU" ne yapar?
Solomon Ucko

@SolomonUcko Özel bir şey yok, diğer 3 uzunluk listesi kadar iyi
Delfad0r

@ H.PWiz Yazılan girdinin kabul edilip edilmediğinin kabul edilip edilmediğine dair Meta üzerinde bir fikir birliği bulamadım, ancak yine de bu varsayım olmadan kodu kısaltmanın bir yolunu buldum. Teşekkürler!
Delfad0r

4
@ Delfad0r Olası bir içe aktarmayı saymanız gerekmeyen , yalnızca işlevinizi tanımlamak için bu içe aktarmadan açıkça bir şeye ihtiyacınız yoksa gerekli olan türü oluşturmak için gereken bir "fikir birliği" vardır. (Ve çağrıldığında işlevinize doğru türün geçtiğini varsayabilirsiniz.)
flawr

1
Kullanarak bir bayt kaydedin[-n,1/n-n..n]
Christian Sievers

6

Kabuk , 14 bayt

ḟo=⁰ṁ^3π3×/NİZ

Basit kaba kuvvet çözümü. Çevrimiçi deneyin!

açıklama

Husk'ta Bölüm varsayılan olarak rasyonel sayılar kullanır ve Kartezyen ürünler sonsuz listeler için doğru çalışır ve bu da çok basit bir programdır.

ḟo=⁰ṁ^3π3×/NİZ
            İZ  Integers: [0,1,-1,2,-2,3,-3...
           N    Natural numbers: [1,2,3,4,5...
         ×/     Mix by division: [0,1,0,-1,1/2,0,2,-1/2,1/3...
                This list contains n/m for every integer n and natural m.
       π3       All triples: [[0,0,0],[0,0,1],[1,0,0]...
ḟ               Find the first one
    ṁ^3         whose sum of cubes
 o=⁰            equals the input.

2

JavaScript (Node.js) , 73 bayt

Olarak girdi alır (p)(q), ve BigInt değişmezdir.pq

İade [[p1,q1],[p2,q2],[p3,q3]]öyle ki .pq=(p1q1)3+(p2q2)3+(p3q3)3

p=>q=>[x=p*(y=p*(p*=9n*q*q)*3n/q)/q+(q*=q*q),p-x,p-=y].map(x=>[x,3n*q-p])

Çevrimiçi deneyin!

HW Richmond (1930) ' dan türetilmiştir , x 3 + y 3 + z 3 = R'nin Rasyonel Çözümleri Üzerine .


2

Haskell , 70 bayt

Gelen Sayılar Teorisi bir giriş (Hardy ve Wright tarafından) bile rasyonel parametreyi içeren bir yapı yoktur. Golf amacıyla bu parametreyi sadece 1 olarak ayarladım ve mümkün olduğunca azaltmayı denedim. Bu formülle sonuçlanır

r[r3648r2+77760r+37324872(r+72)2,12(r72)r(r+72)2,r2720r+518472(r+72)]

f r|t<-r/72,c<-t+1,v<-24*t/c^3,a<-(v*t-1)*c=((a+v*c+c)/2-)<$>[a,v*c,c]

Çevrimiçi deneyin!


1

perl -Migrat -nE, 85 bayt

$_=eval;($a,$b)=($_*9,$_**2*27);$c=$b*$_;say for map$_/($b-$a+3),$c+1,-$c+$a-1,-$b+$a

$_=eval;Girişin bir tamsayı olduğunu biliyorsanız 8 bayt (öndeki ) kaydedebilirsiniz ; programın formun bir girdisini alması için bu bölüm gereklidir 308/1728. Giriş STDIN'den okunur. @Alephalpha tarafından verilen formülü kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.