Prime power triples答案不正确

时间:2015-12-28 22:25:13

标签: python algorithm

我已经尝试this问题,但无法得到正确的答案。任何人都可以帮助我在我的代码中发现问题吗?

我的逻辑:使用seive,创建了素数列表。使用这个素数列表我只是粗暴强迫解决方案。

import math
n = 50000000
exponent = (2, 3, 4)
prime_numbers = [True]*n
prime_numbers[0] = False
prime_numbers[1] =  False
max_prime = 2

#prime number creation
for i in range(2, int(math.sqrt(n))+1):
        if prime_numbers[i]:
            for j in range(i*i, n, i):
                prime_numbers[j] = False

# list of prime numbers
list_data = []
for i in range(2, n):
    if prime_numbers[i]:
        if i**2 >= n:
            break
        list_data.append(i)

count = 0
for i, i_data in enumerate(list_data):
    if i_data**4 >= n:
        break
    for j, j_data in enumerate(list_data):
        if j_data**3 >= n:
            break
        for k, k_data in enumerate(list_data):
            if k_data**2 >= n:
                break
            if (k_data**2 + j_data**3 + i_data**4) < n:
                count += 1  
print(count)

1 个答案:

答案 0 :(得分:1)

我从未从您的代码中获得输出。我没有等到筛子完成。

一些提示:

  1. 筛子很慢。考虑到你需要的最大素数是50,000,000的平方根,你可以大大加快它。

  2. 无需使用enumerate。 <{1}},ij永远不会被使用。

  3. 您正在计算重复项。使用k存储找到的唯一值。

  4. 考虑到上述情况,我在几秒钟内得到了正确答案,因此算法无效。