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>";