ich bin neu in diesem Forum und beginne gerade mich mit Python zu beschäftigen. Daher vergebe man mir, falls dieser Thread im falschen Unterforum gelandet ist.
Also folgendes: ich habe eine Liste A mit Zahlen von 2, 100 generiert und möchte dazu eine Liste von Wahrheitswerten generieren, die an i-ter Stelle ein True enthält, falls die Liste A an i-ter Stelle eine Primzahl ist. Andernfalls soll Sie False enthalten. Ich weiß schon dass ich dazu das Sieb des Erasthothenes benötige, damit das eine möglichst geringe Laufzeit hat.
Dies ist mein Programm:
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from math import sqrt
upper_bound = 100
lower_bound = 2 #start with 2 because 1 is never a prime
numbers = []
primes = []
booleans = [True] + [False]*(upper_bound - 2)
#1 generate a list of numbers 1 to upper_bound
for i in range(lower_bound,upper_bound+1,1):
numbers.append(i)
j = 2
sqroot = sqrt(upper_bound)
while j**2 <= sqroot:
if booleans[j-2] == False:
for k in range((j-2)**2,upper_bound,j):
booleans[k] = True
j += 1
print(numbers) #for testing purposes
print(booleans)
print(len(numbers))
print(len(booleans))