Esto es todo lo que he conseguido. He factorizado los números con éxito, pero solo necesito distribuirlos y dividirlos en la matriz pOverQ.
var p = readInt("What is your p: "); var q = readInt("What is your q: "); var factorP = []; var factorQ = []; var pOverQ = []; var num = 0; function start(){ factor(p, q); println(factorP); println(factorQ); p_Q(p, q); println(pOverQ); } function factor(p ,q){ for(var i = 1; i <= p; i++) { if(p % i == 0){ factorP.push(i); } if(q % i == 0){ factorQ.push(i); } } } function p_Q(p, q){ for(var i = 0; i < (factorP.length)*2; i++){ pOverQ.push(factorP[i]/factorQ[i]); } }¡¡¡Espero que puedas ayudar!!!
Parece que estás tratando de construir algo como esto: calculadora del teorema de ceros racionales
Aquí hay algunos pasos para lograrlo:
function factor(p){ // find all factors of a single number let res=[]; for(let i=1;i<=p;i++) if(p%i == 0) res.push(i); return res; } function p_q(P,Q){ // combine P- and Q-arrays and find all distinct fractions const coll={}, qarr=factor(Q); factor(P).forEach(p=>qarr.forEach(q=>{ let frac=reduce(p,q); coll[frac.join("/")]=frac })); return coll; } // https://stackoverflow.com/a/4652513/2610061 function reduce(num,den){ // reduce a given fraction // greatest common denominator: function gcd(a,b){return b ? gcd(b, a%b) : a;}; const g = gcd(num,den); return [num/g, den/g]; } const res=p_q(6,7); console.log(Object.keys(res)); // show the fractions as text ... console.log(Object.values(res).map(([n,d])=>n/d)); // ... and as valuesComo @jsN00b ya se mencionó, deberá considerar los valores positivos y negativos de las fracciones calculadas como posibles soluciones para su polinomio. Pero te dejo esa parte a ti.