Let [latex]a,b,c \in \mathbb{N}^+[/latex]
Find smallest [latex]d = 2a^2=3b^3+2=5c^5+3[/latex]




elim wrote:The Chinese Remainder theorem shows that [latex]d = 38+30k[/latex] for some [latex]k\in \mathbb{N}^+[/latex]
I don't know if this is useful. Seems a very tough problem.




elim wrote:This is amazing! Would you please explain your algorithm? thanks


issquare(2484723543478)issquare(Mod(123424654645,43857476878425458))

Peter wrote:I do not have an aswer, but I stronly suspect that there are no solutions (appart from the excluded d=2,a=1,b=0,c=-1 which prevents one from proving that ther are no soloutions via the kind of congruences CRGreathouse uses).

CRGreathouse wrote:That's not a solution over the integers -- c = -1 yields d = -2, not 2. (There are no integer solutions with c or d negative, since d/2 must be a square.)

checkmod(v1,m1,v2,m2,ff,lim)={
my(m=lcm(m1,m2),mv1,t);
for(i=1,#v1,
mv1=Mod(v1[i],m1);
for(j=1,#v2,
forstep(n=lift(chinese(mv1,Mod(v2[j],m2))),lim,m,
ff(n)
)
)
)
};
addhelp(checkmod, "checkmod(v1,m1,v2,m2,ff,lim): Runs the function ff on nonnegatives below lim that are v1[i] mod m1 and v2[j] mod m2 for some i and j.");
cc(lim,sizelim)={
my(v1=[1053698],m1=3622080,v2=[0],m2=1,sl,sz,m,s);
local(mod);
\\ Populate arrays
while((sl = (sizelim / 2) \ sizebyte(v1)) > 12,
sz=#v1;
v1=newvec(v1,m1,min(sl,1e3),1);
if(#v1==sz, break, m1 = mod)
);
sizelim -= sizebyte(v1);
print("First array: "#v1" values mod "m1);
print(" "sizelim>>10" kB remain");
while((sl = sizelim \ sizebyte(v2)) > 12,
sz=#v2;
v2=newvec(v2,m2,min(sl,2e3),m1);
if(#v2==sz, break, m2 = mod)
);
m = lcm(m1,m2);
s = #v1 * #v2;
print("Second array: "#v2" values mod "m2);
print("Working with "s" values mod "m);
print("About "lim\m" steps needed");
\\ Convert arrays from d to c
for(i=1,#v1,v1[i]=lift(5*Mod(v1[i],m1)^5+3));
for(i=1,#v2,v2[i]=lift(5*Mod(v2[i],m2)^5+3));
checkmod(v1,m1,v2,m2,
\\c->my(d=5*c^5+3);if(issquare(d/2)&&ispower((d-2)/3,3),print(c))
c->my(d=5*c^5+3);if(ispower((d-2)/3,3)&&issquare(d/2),print(c))
,lim)
};
newvec(v, m, maxprime, avoid)={
my(best=1,bestAt,s,t,a,b,c,tv,nv);
avoid = lcm(avoid, m);
forprime(p=3,maxprime,
s = 0;
if(gcd(avoid,p) == 1,
t = p * 30;
forstep(d=8,t,30,
a=Mod(d/2,t/2);
b=Mod((d-2)/3,t/3);
c=Mod((d-3)/5,t/5);
if(issquare(a)&ispower(b,3)&ispower(c,5),s++)
)
,
\\t = p^(1+valuation(v1,p)) * 30 / gcd(30, p)
s = p \\ Just don't calculate these -- probably not going to be any good, and certainly lots of trouble.
);
if(s/p < best,
best = s/p;
bestAt = p;
)
);
if (best == 1, return(v));
mod = m * bestAt; \\ local variable
t = bestAt * 30;
tv=[];
forstep(d=8,t,30,
a=Mod(d/2,t/2);
b=Mod((d-2)/3,t/3);
c=Mod((d-3)/5,t/5);
if(issquare(a)&ispower(b,3)&ispower(c,5),tv=concat(tv,d))
);
nv=vector(#v*#tv);
a=0;
for(i=1,#v,
for(j=1,#tv,
nv[a++]=lift(chinese(Mod(v[i],m),Mod(tv[j],bestAt)))
)
);
nv
};cc(1e26,3*10^6)
Users browsing this forum: No registered users and 2 guests