在 Python 中查找素因数

编程入门 行业动态 更新时间:2024-10-24 14:25:37

在 Python 中查找素<a href=https://www.elefans.com/category/jswz/34/1732864.html style=因数"/>

在 Python 中查找素因数

本篇文章将介绍如何在 Python 中执行素因数分解。


质因数分解概述

在数学中,数字的因子是那些可以除以给定数字且余数为零的数字。

素数是唯一的数字,只有两个因子,一和数字本身。 此类数字的一些示例包括 3、7、11、13 等。

质因数分解是指找出所有相乘构成原始数字的质数。 我们可以考虑数字 6 的一个简单例子。

该数的质因数分解产生两个因数:2 和 3。


在 Python 中查找质因数的不同方法

我们可以通过多种方式找到指定数字的质因数。 本文将演示下面列出的三种方法:

  • 创建自定义函数
  • 使用埃拉托斯特尼筛法
  • 使用 primefac 模块

让我们从在 Python 中创建自定义函数开始。

执行质因数分解的自定义函数

在数学中,最基本的质因数分解方法是重复除法。 我们反复将数字除以素数。 我们可以在 Python 中使用嵌套循环来实现这一点。

第一个循环确定一个数字是否是素数。 第二个循环将该素数与给定数相除。

如果余数为零,我们将质数附加到列表中。 该函数返回最终列表。 请参阅下面的代码。

def p_factorization(n):i = 2lst = []while i * i <= n:if n % i:i += 1else:n //= ilst.append(i)if n > 1:lst.append(n)return lstprint(p_factorization(20))

输出:

[2, 2, 5]

在上面的示例中,我们返回了 20 的质因数分解。 // 除法运算符确保返回的余数是整数。

使用埃拉托斯特尼筛法进行素因数分解

埃拉托斯特尼筛法算法返回低于给定数字的所有素数。

它标记小于给定数字的值,并且可除以素数的平方以返回所有小于给定数字的素数。

我们可以用它在 Python 中执行素因数分解。 首先,我们找到所需数字以下的质数,然后将它们除以给定的数字以查看其质因数分解。

请参阅以下代码围栏示例:

def sieve_of_erast(number):maximum = number+1d = dict()for i in range(2, maximum): d[i] = Truefor i in d:factors = range(i,maximum, i)for f in factors[1:]:d[f] = Falselst = [i for i in d if d[i]==True]return lstdef p_factorization(number):x = numberres = []lst = sieve_of_erast(number)i = 0while(i < len(lst)):if(x%lst[i]==0):x = x//lst[i]res.append(lst[i])i = 0if(x == 1):breakelse:i = i +1return resprint(p_factorization(20))

输出:

[2, 2, 5]

在上面的代码示例中,我们首先创建一个实现埃拉托色尼筛法的函数,以查找 20 以下的素数。

然后我们创建另一个函数,使用这个素数列表来返回其素数分解。


使用 primefac 模块执行素因子分解

primefac 模块用于执行有关素数的计算。 它可以有效地处理大量计算。

我们可以使用该模块的 primefac() 函数进行素数分解。 它返回可以使用列表构造函数转换为列表的生成器对象。

请参阅下面的代码:

import primefac
print(list(primefac.primefac(20)))

输出:

[2, 2, 5]

更多推荐

在 Python 中查找素因数

本文发布于:2023-12-08 11:39:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672669.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:因数   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!