Hướng dẫn sum of prime numbers from 1 to 1000 in python - tổng các số nguyên tố từ 1 đến 1000 trong python

-4

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đã viết một chương trình đếm tổng số của PRIME UPTILL 1000. Chương trình như sau:

limit = 1000

def is_prime[n]:
    for i in range[2, n]:
        if n%i == 0:
            return False
    return True

sum = 0
for i in range[2, int[limit+1]]:
    if is_prime[i]:
        sum = sum + i
        count += 1
print sum

Tôi có thể thực hiện những thay đổi nào để tìm 1000 số nguyên tố thay vì tối đa 1000 số? Ngoài ra, tôi đang tìm kiếm sự phức tạp không gian là O [1] và độ phức tạp về thời gian như O [N] [như tôi biết các phương pháp khác có thể làm điều đó :-] chẳng hạn như "Sây eratosthenes" và tìm kiếm nguyên tố trong khi lặp lại SQRT [n]

Xin hãy sửa cho tôi nếu tôi đi sai một số ở đâu. Cảm ơn bạn.

Hỏi ngày 14 tháng 4 năm 2015 lúc 1:26Apr 14, 2015 at 1:26

Deepdeepdeep

6664 Huy hiệu vàng16 Huy hiệu bạc33 Huy hiệu Đồng4 gold badges16 silver badges33 bronze badges

13

Chỉ là một cải tiến nhỏ dựa trên mã của bạn để tìm các số nguyên tố

limit = 1000

def is_prime[n]:
    for i in range[2, n]:
        if n%i == 0:
            return False
    return True

sum = 0
num = 2
for i in xrange[limit]:
    while not is_prime[num]:
        num += 1
    sum += num
    num += 1 # sorry, miss this
print sum
2 thay vì các số
limit = 1000

def is_prime[n]:
    for i in range[2, n]:
        if n%i == 0:
            return False
    return True

sum = 0
num = 2
for i in xrange[limit]:
    while not is_prime[num]:
        num += 1
    sum += num
    num += 1 # sorry, miss this
print sum
2.

limit = 1000

def is_prime[n]:
    for i in range[2, n]:
        if n%i == 0:
            return False
    return True

sum = 0
num = 2
for i in xrange[limit]:
    while not is_prime[num]:
        num += 1
    sum += num
    num += 1 # sorry, miss this
print sum

Và bạn cũng có thể sử dụng một vòng lặp duy nhất khi tìm kiếm một số thứ bạn quan tâm nhất định, nó có thể chỉ là vấn đề của hương vị.

limit = 1000

def is_prime[n]:
    for i in range[2, n]:
        if n%i == 0:
            return False
    return True

sum = 0
count = 0
num = 2
while count != limit:
    if is_prime[num]:
        sum += num
        count += 1
    num += 1

print sum

Đã trả lời ngày 14 tháng 4 năm 2015 lúc 2:17Apr 14, 2015 at 2:17

Zhangwtzhangwtzhangwt

3481 Huy hiệu vàng2 Huy hiệu bạc12 Huy hiệu đồng1 gold badge2 silver badges12 bronze badges

3

Mã số:

def f[]:
    i = 2
    while True:
        if all[i % x != 0 for x in range[2, i-1]]:
            yield i
        i += 1

primes = f[]
print sum[primes.next[] for _ in range[1000]]

Hoặc một lớp lót:

import itertools
print sum[itertools.islice[itertools.ifilter[lambda x: all[x % i != 0 for i in range[2, x]], f[]], 0, 1000]]

Đã trả lời ngày 14 tháng 4 năm 2015 lúc 1:42Apr 14, 2015 at 1:42

0

Tôi muốn đề xuất thuật toán sau [sàng của Eratosthenes]

n=1000
limit_sieve = 10000
primes = set[]
notPrimes = set[]
i = 2
while len[primes]

Bài Viết Liên Quan

Chủ Đề