[英]How to find the common prime factors of two numbers? javascript
我知道如何找到一個數字的質因數(我的代碼在下面),但我想知道如何找到兩個數字之間的共同質因數? 提前致謝!
function isPrime(number){
if(number<= 1) return false;
if(number===2) return true;
else{
for(let i=2; i<number; i++){
if(number%i===0){
return false;
}
}
return true;
}
}
console.log(isPrime(5)); //5
const findPrimeFactors = num => {
const result = num % 2 === 0 ? [2] : [];
let start = 0;
while(start <= num){
if(num % start === 0){
if(isPrime(start)){
result.push(start);
}
}
start++;
}
return result;
}
console.log(findPrimeFactors(18)); //[2, 2, 3]
console.log(findPrimeFactors(5)); //[5]
使用prime-lib庫的有效方法:
import {primeFactors} from 'prime-lib';
const arr1 = primeFactors(6); // [2, 3]
const arr2 = primeFactors(12); // [2, 2, 3]
const commonFactors = arr1.filter(value => arr2.includes(value));
console.log(commonFactors); //=> [2, 3]
我們只需找到 arrays 的所有因子,並獲得值交集。
該庫中的primeFactors
執行速度比此處顯示的早期實現要快得多。
您可以執行以下操作:
注意:看起來你的素數函數工作有問題
const gcd = function(a, b) { if (!b) { return a; } return gcd(b, a % b); } function isPrime(number){ if(number<= 1) return false; if(number===2) return true; else{ for(let i=2; i<number; i++){ if(number%i===0){ return false; } } return true; } } function findPrimeFactors(n) { const factors = []; let divisor = 2; while (n >= 2) { if (n % divisor == 0) { factors.push(divisor); n = n / divisor; } else { divisor++; } } return factors; } console.log(findPrimeFactors(gcd(6,12)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.