verildiğinde hızlı bir şekilde
Burada tamsayılardır. Açıkçası ilginç bir cevap veriyor; genel olarak bu güçler ne kadar yaklaşabilir? Ayrıca, minimizing x, y'yi hızlı bir şekilde nasıl hesaplayabiliriz ?
verildiğinde hızlı bir şekilde
Burada tamsayılardır. Açıkçası ilginç bir cevap veriyor; genel olarak bu güçler ne kadar yaklaşabilir? Ayrıca, minimizing x, y'yi hızlı bir şekilde nasıl hesaplayabiliriz ?
Yanıtlar:
İlk önce nin sürekli kesirini kullanmanın ve yakınsamalarında test etmenin en iyi olacağını düşündüm , çünkü bu yakınsaklarda bir anlamda optimal yaklaşımın noktaları . Bundan sonra, monotonik azalan mesafelere sahip olduğundan emin olmak için en azından genelleştirilmiş sürekli kesirleri kullanması gerektiği anlaşılmaktadır .
Bundan sonra ve bununla birlikte karmaşık algoritma, aşağıdaki kaba kuvvet algou Pari / GP'de daha da hızlıydı
\\ print X,Y,d conditional X>lowboundX, Y > lowboundY, d<upperboundD
{pri1(lbX,lbY,ubd,a,b,X,Y,d)=if(X<lbX || Y<lbY || abs(d)>ubd,return(0));
print(a,"^",X,"-",b,"^",Y,"=",d)); }
{mylist(maxa=19,maxb=99,lbX=3,lbY=2,ubd=100)=print(" ");
for(a=2,maxa,for(b=a+1,maxb,
if(gcd(a,b)>1,next()); \\ ignore trivial multiples
X=1;Y=1;Xa=a;Yb=b;
d=Xa-Yb; pri1(lbX,lbY,ubd,a,b,X,Y,d);
for(k=1,20,
while(d<0,Xa*=a;d=Xa-Yb;X++;pri1(lbX,lbY,ubd,a,b,X,Y,d););
while(d>0,Nb*=b;d=Xa-Yb;Y++;pri1(lbX,lbY,ubd,a,b,X,Y,d););
if(X>30 || Y>20, break()); \\ stop at max X=30 or Y=20
);
)); }
Bu çağrıdan sonra mylist(100,1000,3,3,100)
tüm küçük bir fark bulmak için burada her iki üs ve tüm bazlar için en az . Yalnızca ve .
Bu, bir şekilde naif bir algo olmasına rağmen (aynı zamanda ele alınması zor olan daha kaba konular (örneğin, çözümlerin bütünlüğü ile) vardı) sürekli kesir yaklaşımından çok daha hızlıydı ...
Bir protokol (manuel olarak sıralanmış):
gettime();mylist(200,10 000,3,3,100);gettime() /1000.0 \\ ~ a*b/6000 sec
(400 sec)
2^8- 3^5= 13
6^7-23^4= 95
2^7- 3^4= 47
2^7- 5^3= 3
2^5- 3^3= 5
3^4- 4^3= 17
---------------
2^6- 3^4=-17
3^5- 4^4=-13
2^5- 3^4=-49
2^8- 7^3=-87
(4^4- 7^3=-87)
3^7-13^3=-10
2^6- 5^3=-61
(4^3- 5^3=-61)
2^5- 5^3=-93
2^4- 3^3=-11
3^4- 5^3=-44
6^4-11^3=-35
15^4-37^3=-28
3^3- 4^3=-37
3^3- 5^3=-98
5^3- 6^3=-91