测试并返回只有当被一个范围整除的数字。

我正在努力确定如何获得以下问题的答案。

我试图做的是在一个数字列表中取x(例如1到2,000,000),然后除以一定范围内的数字y,例如1到20,只有当我的x值被第二个列表中的所有数字所除时才返回。

我试过下面的方法,但当我检查我试图追加的列表时,它返回的是一个空白

divisibles = []

def isdivisible(x):
    for i in range(1,21):
        if x%i!=0:
            return False
    return True

for x in range(1,2000001):
    if isdivisible(x):
        divisibles.append(x) 

请谁能帮帮我。我一般对全案的测试都很苦恼。

谢谢。

解决方案:

优化后的解决方案。

primes = []
temporary_dividor_check = []
max_nominator_divisible = []
max_div = 1
min_denominator = 1
max_denominator = 21
min_nominator = 1
max_nominator = 20000000
counter = 1

nominators = list(range(min_nominator,max_nominator+1))
denominators = range(min_denominator,max_denominator+1)

def generate_prime_numbers(start,end):
    global primes
    for val in range(start, end + 1): 
        if val > 1: 
            for n in range(2, val//2 + 2): 
                if (val % n) == 0: 
                    break
                else: 
                    if n == val//2 + 1: 
                        primes.append(val) 

generate_prime_numbers(min_denominator,max_denominator+1)

for prime in primes:
    max_div = max_div*prime

while counter * max_div < max_nominator:
    max_nominator_divisible.append(counter*max_div)
    counter += 1

for divisible1 in max_nominator_divisible:
    if divisible1 % max_div == 0:
        for denominator in denominators:
            divisible = divisible % denominator
            if divisible == 0:
                temporary_dividor_check.append(denominator)
                if temporary_dividor_check == list(denominators):
                    print("{} is divisible by all denominators".format(divisible1))                
        temporary_dividor_check = []

最简单但超级耗费CPU(浪费)的方法。

nominators = range(1,20000000)
denominators = range(1,21)

temporary_dividor_check = []

for nominator in nominators:
    for denominator in denominators:
        divisible = nominator%denominator
        if divisible == 0:
            temporary_dividor_check.append(denominator)
            if temporary_dividor_check == list(denominators):
                print("{} is divisible by all denominators".format(nominator))                
    temporary_dividor_check = []

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如果你不声明任何参数会怎样?

2022-5-13 6:00:13

解决方案

又是一个没有任何效果的doxygen

2022-5-13 6:00:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索