簡體   English   中英

如何求兩個數的公質因數? javascript

[英]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執行速度比此處顯示的早期實現要快得多。

您可以執行以下操作:

  1. 求兩個數的最大公約數。
  2. GCD 的因式分解是您想要的結果。

注意:看起來你的素數函數工作有問題

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM