我试图找到Python中提供的一个数的所有可能的因式分解。
例如:1)给定n=12,输出为,f(n)=[[2,2,3],[4,3],[6,2],[12]]
2)给定n=24,输出为,f(n)=[2,2,2,3],[2,2,6],[2,12],[4,6],[8,3],[24]]
def p(a):
k=1
m=1
n=[]
for i in range (len(a)):
for j in range(0,i+1):
k*=a[j]
for l in range(i+1,len(a)):
m*=a[l]
n+=[[k,m],]
k=1
m=1
return n
def f(n):
primfac = []
d = 2
while d*d <= n:
while (n % d) == 0:
primfac.append(d)
n //= d
d += 1
if n > 1:
primfac.append(n)
return p(primfac)
[[2, 10], [4, 5], [20, 1]]
2)1)对于n=24,输出为,
[[2, 12], [4, 6], [8, 3], [24, 1]]
我可以做什么来获得相关的结果?
我不懂python,所以不能帮助您使用代码,但在这里,我提供了一个相关问题的解释(如果您能读懂Java的话,也有一些Java代码)。
>
将您的数字乘以多重性-这是极有可能最昂贵的步骤O(sqrt(N))-如果这是您想要的,您可以停在这里
构建{1,Pi1,Pi1,…,Pimi}-Pi是重数为mi的素因子的集合
在这些集合之间执行笛卡儿乘积,您将得到您的数的所有除数--您将在这里花费更长的时间只用于具有许多不同因子(和倍数)的数--例如210x38x54x73将有1980个除数。
现在,由上面得到的每个除数d
都将带上它的对(n/d
),所以如果您想要不同的因式分解而不考虑顺序,您需要对它们进行排序并消除重复项。
问题内容: 在Python中,我有一个n个列表的列表,每个列表具有可变数量的元素。如何创建包含所有可能排列的单个列表: 例如 我想要 注意,我事先不知道n。我以为itertools.product是正确的方法,但它需要我提前知道参数的数量 问题答案: 您不需要事先知道使用
问题内容: 我有从0到8的数字。我想结果是这些数字的所有可能集合,每个集合都应使用所有数字,每个数字在集合中只能出现一次。 我希望看到用PHP制作的解决方案可以打印出结果。或者,至少,我希望在组合理论上有所收获,因为我早已忘记了它。计算多少排列的公式是什么? 示例集: 0-1-2-3-4-5-6-7-8 0-1-2-3-4-5-6-8-7 0-1-2-3-4-5-8-6-7 0-1-2-3-4-8
问题内容: 我正在尝试找出将两个列表合并为所有可能组合的最佳方法。因此,如果我从两个这样的列表开始: 结果列表如下所示: 也就是说,它基本上会生成一个列表列表,其中包含所有可能的组合。 我一直在通过itertools进行工作,我肯定可以找到答案,但是我无法提出一种使其以这种方式起作用的方法。我最接近的是: 哪个产生了: 因此,它会执行每个列表中所有可能的项目组合,但不会执行所有可能的结果列表。我如
问题内容: 我有一些复杂的计算算法,基本上可以测试一些较小的矩阵是否适合另一个较大的矩阵。 是否所有矩阵都适合大矩阵,取决于小矩阵的顺序。如果小矩阵不合适,则应重新排列ArrayList并重试,直到测试了所有可能的顺序/序列为止。 如果我有5个小矩阵,则总共有 5个! (= 120)数组可以有的订单。 我的问题是我不知道如何重新排列这些对象(矩阵),因此我可以测试所有可能的顺序。我希望有人可以帮助
问题内容: 我正在尝试获取与输入arrayList相同长度的ArrayList的所有可能排列。即1,2,3的ArrayList将导致123、132、213、231、321、312,不包括较短的排列(例如1,2,12、13等)。这是我到目前为止的代码: 坐标是一个只有x,y且访问了该项目以容纳项目的2D点的类。 当前,我正在使用此代码将其打印到控制台,但是如果有人可以阐明将其存储到ArrayList
首先,我首先要说英语不是我的第一语言,所以我对任何糟糕的解释表示歉意。 我想知道如何获取具有如此多不同顺序的字符串的每个子字符串。在你告诉我这个问题之前已经问过了,我想说的是,我看到的这个任务的几乎每个代码实现都不包含重复项。但是假设我有一个字符串“enviroment”,我想要每个子字符串,包括“ment”,“met”,“ten”,“net”,“note”,“more”e.t.c e.t.c 我