Python中查找质因数

简介: Python中查找质因数

如何在Python中进行素因式分解。

质因数分解的概述

在数学中,一个数的因数是指那些可以除以给定数并留下零余数的数字。

质数是只有两个因数的独特数字,一个和数字本身。这类数字的一些例子是3,7,11,13,等等。

素数因数化是指找到所有乘以原数的素数。我们可以考虑一个简单的例子:数字6。

这个数字的质因数分解产生了两个因子,即2和3。
在Python中寻找质因数的不同方法

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

  • 创建一个自定义函数
  • 使用Sieve of Eratosthenes
  • 使用primefac 模块

让我们先在Python中创建一个自定义函数。

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

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

第一个循环确定一个数字是否是素数。第二个循环将这个质数和给定的数字相除。

如果余数为零,我们就把这个质数追加到一个列表中。该函数返回最后的列表。请看下面的代码。

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

输出:

[2, 2, 5]

在上面的例子中,我们返回了20 的质因数。用于除法的// 算子确保返回的余数是一个整数。

Sieve of Eratosthenes 来进行质因式分解

Sieve of Eratosthenes 算法返回低于给定数字的所有质数。

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

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

请看下面的代码栅栏作为例子:

def sieve_of_erast(number):
    maximum = number+1
    d = dict() #Python小白学习交流群:711312441

    for i in range(2, maximum): d[i] = True
    for i in d:
        factors = range(i,maximum, i)
        for f in factors[1:]:
            d[f] = False
    lst = [i for i in d if d[i]==True]
    return lst
def p_factorization(number):
    x = number
    res = []
    lst = sieve_of_erast(number)
    i = 0
    while(i < len(lst)):
        if(x%lst[i]==0):
            x = x//lst[i]
            res.append(lst[i])
            i = 0
            if(x == 1):
                break
        else:
            i = i +1
    return res
print(p_factorization(20))

输出:

[2, 2, 5]

在上面的代码例子中,我们首先创建一个函数,实现Sieve of Eratosthenes ,找到低于20 的素数。

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

primefac 模块来进行素数分解

primefac 模块是用来进行有关质数的计算的。它可以有效地处理大量的计算。

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

请看下面的代码:

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

输出:

[2, 2, 5]
相关文章
|
7月前
|
存储 算法 Python
Python分解质因数
Python分解质因数
|
Python
Python 分解质因数(编写函数实现:输入一个正整数n,把数字n分解成不能再分解因子的乘法,比如:8=2*2*2, 10 = 2*5,而不是 8 = 2 * 4 这种可以再分解的。)
Python 分解质因数(编写函数实现:输入一个正整数n,把数字n分解成不能再分解因子的乘法,比如:8=2*2*2, 10 = 2*5,而不是 8 = 2 * 4 这种可以再分解的。)
920 0
Python正整数分解质因数
Python正整数分解质因数
|
机器学习/深度学习 算法 芯片
【Python 百练成钢】分解质因数、龟兔赛跑、时间转换、完美的代价、芯片测试
【Python 百练成钢】分解质因数、龟兔赛跑、时间转换、完美的代价、芯片测试
【Python 百练成钢】分解质因数、龟兔赛跑、时间转换、完美的代价、芯片测试
|
Python
Python经典编程习题100例:第14例:分解质因数
Python经典编程习题100例:第14例:分解质因数
149 0
|
7天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
13天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
13天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
13天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
4天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
下一篇
无影云桌面