当前位置: 首页 > 知识库问答 >
问题:

python - 分解质因素的算法很难,理解不了。 请问有哪位大佬可以进行解释一下呢?

桑睿识
2025-05-09

分解质因素的算法很难,理解不了。

请问有哪位大佬可以进行解释一下呢?

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )

共有1个答案

西门梓
2025-05-09

首先你需要一个质数表\( 2, 3, 5, 7 \dots \)

依次用这些质数试除 180,直到为 1

180 / 2 = 90

对 90 执行同样的步骤

90 / 2 = 45

45 / 2 ❌

45 / 3 = 15

15 / 2 ❌

15 / 3 = 5

5 / 2 ❌

5 / 3 ❌

5 / 5 = 1

得到分解 2 2 3 3 5


let maxPrime = 1 // 质数集合中最大的质数
const primeNumbers = new Set<number>() // 质数集合

/**
 * 返回小于等于 max 的质数
 */
function generatePrimes(max: number) {
  if (maxPrime < max) {
    for (let i = maxPrime + 1; i <= max; i++) {
      if (primeNumbers.values().every((p) => i % p !== 0)) {
        maxPrime = i
        primeNumbers.add(i)
      }
    }
  }

  const primes = primeNumbers.values().toArray()

  return primes.slice(0, primes.findLastIndex((p) => p < max) + 1)
}

function primeFactor(num: number) {
  const result: number[] = [],
    primes = generatePrimes(Math.floor(Math.sqrt(num)))

  while (num !== 1) {
    for (const p of primes) {
      if (num % p === 0) {
        result.push(p)
        num /= p
        break
      }
    }
  }

  return result
}

console.log(primeFactor(180)) // [ 2, 2, 3, 3, 5 ]
 类似资料:
  • text.replace(reg, (match, capture)=>{}) 里面的match capture 是什么意思?

  • 我刚刚写了一个方法,它包含两个参数:1。扩展数字和2的任何类型的数组列表。相同类型的数字。此方法应返回一个数组列表,其中包含小于第二个参数的所有数字。 我的课叫

  • 本文向大家介绍请解释下执行栈有哪些特点?相关面试题,主要包含被问及请解释下执行栈有哪些特点?时的应答技巧和注意事项,需要的朋友参考一下 执行栈,也叫调用栈,用于存储在代码执行期间创建的所有执行上下文。可以把执行栈看作一个存储函数调用的栈结构,遵循先进后出的原则。 规则如下: 1.首次运行JS代码时,会创建一个全局执行上下文,push到当前的执行栈中,每当发生函数调用时,都会为该函数创建一个新的函数

  • 本文向大家介绍请解释下你对EventEmitter的理解相关面试题,主要包含被问及请解释下你对EventEmitter的理解时的应答技巧和注意事项,需要的朋友参考一下 EventEmitter是Node基于发布订阅模式实现的第三方库events EventEmitter多用于被继承,而并非直接使用 EventEmitter中实现了on、emit、once、off、listen等其他功能 当on中监

  • 问题内容: 抱歉,这是一个非常广泛的问题。 以下代码是网络上某些内容的片段。我感兴趣的关键是从@protected开始的行- 我想知道这是做什么的以及它是如何做到的?在执行do_upload_ajax函数之前,似乎正在检查是否已登录有效用户。这似乎是进行用户身份验证的一种非常有效的方法。我不了解此@函数的机制- 有人可以引导我正确的方向来解释如何在现实世界中实现它吗?Python 3请回答。谢谢。

  • 两个和给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 您可以假设每个输入都有一个精确的解决方案并且您可能不会使用相同的元素两次 示例: 给定Nums=[2, 7, 11, 15],目标=9, 因为nums[0]nums[1]=27=9,所以返回[0,1]。 解决方案: 这对我来说毫无意义,请有人解释一下它是如何工作的?

  • 本文向大家介绍请解释下算法有什么特征(基本要素)?相关面试题,主要包含被问及请解释下算法有什么特征(基本要素)?时的应答技巧和注意事项,需要的朋友参考一下 一、数据对象的运算和操作 1,算术运算:加减乘除等运算 2,逻辑运算:或、且、非等运算 3,关系运算:大于、小于、等于、不等于等运算 4,数据传输:输入、输出、赋值等运算 二、算法的控制结构 有穷性、确切性、输入项、输出项

  • 本文向大家介绍请解释一下TreeMap?相关面试题,主要包含被问及请解释一下TreeMap?时的应答技巧和注意事项,需要的朋友参考一下 考察点:key-value集合 TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的