JSFiddle - React, Tailwind, and code Playground
HTML
<SPAN id=body></SPAN>
JavaScript
function nearest(arr1,arr2,Q){
var _i=arr1.length-1,
_j=arr2.length-1,
mind=Math.abs(Q-arr1[_i]*arr2[_j]);
for (var i=0,j=arr2.length-1;i<arr1.length;i++) {
while (j>0){
d=Math.abs(Q-arr1[i]*arr2[j]);
if(d<mind){
mind=d;
_i=i;
_j=j;
}
if(arr1[i]*arr2[j]<Q)break;
j--;
}
}
return {"i":_i,"j":_j,"r":arr1[_i]*arr2[_j]};
}
function nearest_full(arr1,arr2,Q){
var _i=arr1.length-1,
_j=arr2.length-1,
mind=Math.abs(Q-arr1[_i]*arr2[_j]);
for (var i=0;i<arr1.length;i++) {
for(var j=0;j<arr2.length;j++){
d=Math.abs(Q-arr1[i]*arr2[j]);
if(d<mind){
mind=d;
_i=i;
_j=j;
}
}
}
return {"i":_i,"j":_j,"r":arr1[_i]*arr2[_j]};
}
function rnd(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function sort_cb(a,b){
return a-b;
}
var n=rnd(10,20);
var m=rnd(10,20);
var arr1=[];
for(var i=0;i<n;i++)arr1.push(rnd(1,100));
arr1.sort(sort_cb);
var arr2=[];
for(var i=0;i<m;i++)arr2.push(rnd(1,100));
arr2.sort(sort_cb);
var Q=rnd(1,10000);
body.innerHTML="<pre>arr1=["+arr1.join(',')+"]\narr2=["+arr2.join(',')+"];\nQ="+Q+";</pre>";
var r=nearest(arr1,arr2,Q);
var rf=nearest_full(arr1,arr2,Q);
body.innerHTML+="<pre>"+arr1[r.i]+"*"+arr2[r.j]+"="+r.r+"</pre>";
body.innerHTML+="<pre>"+arr1[rf.i]+"*"+arr2[rf.j]+"="+rf.r+" //полный перебор</pre>";