我有一个非常奇怪的问题,似乎找不到解决方法.
下面的代码找到素数因子分解n,将素因子放入列表然后找到素因子的所有可能的和变量,并打印出该列表的唯一值.
示例:44的素数因子是2*2*11,因此44将打印出来
2,2+2,11,2+11,2+2+11 = 2,4,11,13,15:
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import math
import sys
import itertools
from itertools import permutations
def primes(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 primfac
def primecombo(n):
b = []
for i in range(1, len(primes(n))+1):
for subset in permutations(primes(n), i):
b.append(sum((subset)))
a = list(set(b))
a.sort()
return a
Run Code Online (Sandbox Code Playgroud)
代码本身似乎在大多数情况下工作得很好而且效率很高但是由于一些非常奇怪的原因,当你处理任何只有素数因素为2的数字时,它变得非常慢.
如果你尝试打印primecombo(444444)或打印primecombo(23452823)它几乎会立即打印结果,但如果你尝试2048或4096它真的很慢.
任何人都可以看到为什么会这样,我可以做些什么来解决它?
我有大量的 Excel 文件,我只想使用未隐藏的工作表,并且我想忽略所有隐藏的工作表。
目前,我的 python 脚本循环遍历每个工作表,无论它是否隐藏。有没有一种简单的方法来检查工作表是否隐藏?
我在网上查看过,但我唯一能找到的是隐藏/取消隐藏工作表的方法,而我不想在这里这样做。
我有一个脚本,通常需要几个小时才能运行(主要是因为它需要循环数十万次。目前,我有一个print语句来检查进度,以便每次完成1次迭代时都会打印出来:“查询然后,在“ 100000完成的查询2”下面,依次类推。
有什么方法可以删除SQL Server Management Studio中的旧消息,以便消息窗格仅显示最新的打印语句?
抱歉,如果这是一个重复的问题,我似乎在其他地方找不到它。
我有一个像这样的表:
column1 column2 column3
entry 1 A B
ENTRY 2 A C
ENTRY 3 B C
ENTRY 1 B A
ENTRY 2 C A
ENTRY 3 C B
Run Code Online (Sandbox Code Playgroud)
我使用的表有更多列,但想法是相同的。
有没有一种简单干净的方法来获取不同的条目(即我只对返回条目 1 一次而不是两次感兴趣。
python ×2
sql-server ×2
ssms ×2
distinct ×1
loops ×1
messages ×1
openpyxl ×1
performance ×1
permutation ×1
sql ×1
t-sql ×1