Python :: Aufgabe #46
6 Lösungen
Alle Primzahlen bis zu einem Maximalwert ermitteln
Anfänger - Python
von devnull
- 26.02.2014 um 18:36 Uhr
Es soll ein Programm geschrieben werden, welches alle Primzahlen im Bereich von 2 bis zu einem Maximalwert sucht und auf der Konsole ausgibt.
Den Maximalwert soll der Benutzer beim Programmaufruf auf der Kommandozeile angeben können.
Der Algorithmus zur Primzahlensuche ist frei wählbar.
Den Maximalwert soll der Benutzer beim Programmaufruf auf der Kommandozeile angeben können.
Der Algorithmus zur Primzahlensuche ist frei wählbar.
Lösungen:
""" primzahlen - Python 3.3.4
Berechnet alle Primzahlen im Intervall [2 - obere Grenze] """
def eingabe (a):
""" abgesicherte Eingabe fuer Integerwerte (a==False)
"""
b = 0
while a == False:
try:
b = int(input(':'))
a = True
if b < 3:
a =False
print ('Bitte eine positive Zahl groesser als 2 eingeben', end = ' ')
except ValueError:
print ('Bitte eine Integerzahl eingeben', end = ' ')
a = False
return b
def aufaddition (a, b, c):
""" addiert die bisher gefundenen Primzahlen auf bis >= aktuelle Zahl
"""
while a <= c:
a += b
return (a)
pz = [2]
pzsumme = [2]
print ('bis zu welcher Zahl sollen die Primzahlen berechnet werden?', end = ' ')
maximum = eingabe (False)
pzanz = 1
lfdzahl = 3
flag = True
i = 0
j = 0
while lfdzahl in range (2, maximum+1):
while flag == True and i < pzanz:
while i in range (0, pzanz):
if pzsumme[i] == lfdzahl:
flag = False # keine Primzahl
pzsumme[i] = aufaddition (pzsumme[i], pz[i], lfdzahl)
i += 1
if flag == True:
pz.append (lfdzahl)
pzsumme.append (lfdzahl)
pzanz += 1
lfdzahl +=1
i = 0
flag = True
print (pz)
l = []
modanzahl=0
x = 0
prim = int (input("Bitte geben sie eine Zahl ein"))
ablauf = prim
while prim != 1:
while ablauf > 0:
mod = prim % ablauf
ablauf = ablauf - 1
if mod == 0:
modanzahl= modanzahl + 1
if modanzahl == 2:
print (prim, "ist eine Primzahl")
l.append(prim)
prim = prim -1
ablauf = prim
modanzahl = 0
print ("Hier eine Liste aller Primzahlen:")
print (l)
import math
def prim(n):
if n == 2:
return True
if n % 2 == 0:
return False
else:
for i in range(2,int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
wert = int(input("Maximalwert eingeben: "))
for i in range(2,wert+1):
if prim(i) == True:
print(i)
# -*- coding: utf-8 -*-
#feststellen ob Zahl Primzahl ist oder nicht
def isprim(wert):
x = 2
if wert == 0 or wert == 1:
return False
elif wert == 2:
return True
else:
while x < wert:
if wert % x == 0:
return False
x = x + 1
return True
eingabe = input("Bitte eine Zahl als Obergrenze eingeben: ")
# Ausgabe aller Primzahlen bis Zahl
y = 0
while y <= eingabe:
if isprim(y):
print y
y = y + 1
else:
y = y + 1
import os, sys, time
def eratosthenes(prim, limit):
i=j=0
anzahl=0
prim[1]=1
i=2
while i*i <= limit:
if prim[i] == 1:
j=i<<1
while j <= limit:
#print(prim)
prim[j]=0
j+=i
i+=1
for i in range(2, limit):
if prim[i]==1:
print(str(i)+"\t", end='')
i+=1
def main():
t_start=time.clock()
i=0
prim=[]
limit=int(input("Limit eingeben...: "))
prim=[(1) for i in range(limit+1)]
eratosthenes(prim, limit)
print("\nProgrammlaufzeit = "+str(time.clock()-t_start))
sys.exit(0)
if __name__ == '__main__':
main()
grenze = int(input("Obergrenze der Primzahlenausgabe: "))
i = 2
teiler = 0
primzahl = [2]
for element in range(3, grenze):
while i < element:
if element % i == 0:
teiler = 1
i = element
else:
i += 1
i = 2
if teiler == 0
primzahl.append(element)
teiler = 0
print("Primzahlen:", primzahl)
