小编Rus*_*ssW的帖子

如何在代码中实现除数函数?

整体问题:项目欧拉12 - 第一个三角形数值超过500个除数的值是多少?

问题的焦点:除数函数

语言:Python

描述:我使用的函数是粗暴的,程序找到一个除数比x更多的除数所需的时间几乎呈指数增长,每10或20个数字更高.我需要达到500或更多的除数.我已经确定了除数函数正在减少程序.我做的研究让我得到了除数函数,特别除数函数,它应该是一个函数,它将计算任何整数的所有除数.我看过的每一页似乎都是针对数学专业的,我只有高中数学.虽然我确实遇到过一些提到关于素数和阿特金斯筛选的页面,但是我无法在素数之间建立连接并找到任何整数的所有除数,也没有在网上找到任何关于它的东西.

主要问题:有人可以解释如何编码除数函数甚至提供样本吗?当我用代码查看它们时,数学概念对我来说更有意义.非常感谢.

蛮力除数功能:

def countdiv(a):
    count = 0
    for i in range(1,(a/2)+1):
        if a % i == 0:
            count += 1
    return count + 1    # +1 to account for number itself as a divisor
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
6339
查看次数

每个长度为N个随机,连续和非重叠的子序列

我试图获得序列的n个随机和非重叠切片,其中每个子序列的长度为l,最好是它们出现的顺序.

这是我到目前为止的代码,每次尝试使它工作变得越来越混乱,不用说它不起作用.

def rand_parts(seq, n, l):
    """
    return n random non-overlapping partitions each of length l.
    If n * l > len(seq) raise error.
    """
    if n * l > len(seq):
        raise Exception('length of seq too short for given n, l arguments')
    if not isinstance(seq, list):
        seq = list(seq)
    gaps = [0] * (n + 1)
    for g in xrange(len(seq) - (n * l)):
        gaps[random.randint(0, len(gaps) - 1)] += 1
    result = []
    for i, g in enumerate(gaps):
        x = …
Run Code Online (Sandbox Code Playgroud)

python random list

2
推荐指数
1
解决办法
1621
查看次数

标签 统计

python ×2

list ×1

random ×1