Python :: Aufgabe #54
6 Lösungen

Finde die erste Zahl die durch alle Zahlen bis 30teilbar ist
Fortgeschrittener - Python
von 96fabi
- 25.09.2014 um 09:01 Uhr
Gesucht wird die erste Zahl, die durch alle Zahlen bis 30 geteilt werden kann(1-30).
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
Lösungen:

import fractions grenze = int(input("Obergrenze: ")) liste = [i for i in range(1, grenze+1)] while len(liste) > 1: a = liste.pop() b = liste.pop() liste.append(a*b/fractions.gcd(a,b)) print("Die kleinste Zahl, die von den Zahlen 1 bis", grenze, "teilbar ist:") print(int(liste[0]))

zahl=6469963230 #Produkt von allen Primzahlen bis 30 teiler=1 while True: if zahl%teiler==0: teiler+=1 else: zahl+=1 teiler=1 if teiler==30: print zahl, "ist die erste Zahl die druch alle Zahlen bis 30 teilbar ist." break

#!/usr/bin/python3 # -*- encoding: utf-8 -*- # #>>>autor: Sebastian Müller #>>>licence: GPL #>>>contact: mypythonmueller@gmail.com # #Programm nach fogender Aufgabenstellung #Gesucht wird die erste Zahl, die durch alle Zahlen bis 30 geteilt werden kann(1-30). #Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann. #Dieses ist 232792560 print("Programm, das die erste Zahl ermitteln soll, die sich durch alle Zahlen" "von 1-30 teilen lässt.") ende = 1 zahler = 30 while ende: zahler += 1 if zahler % 250000 == 0: print("Alle zahlen überprüft bis: {0:21d}".format(zahler)) if zahler % 2 > 0: continue elif zahler % 3 > 0: continue elif zahler % 4 > 0: continue elif zahler % 5 > 0: continue elif zahler % 6 > 0: continue elif zahler % 7 > 0: continue elif zahler % 8 > 0: continue elif zahler % 9 > 0: continue elif zahler % 10 > 0: continue elif zahler % 11 > 0: continue elif zahler % 12 > 0: continue elif zahler % 13 > 0: continue elif zahler % 14 > 0: continue elif zahler % 15 > 0: continue elif zahler % 16 > 0: continue elif zahler % 17 > 0: continue elif zahler % 18 > 0: continue elif zahler % 19 > 0: continue elif zahler % 20 > 0: continue elif zahler % 21 > 0: continue elif zahler % 22 > 0: continue elif zahler % 23 > 0: continue elif zahler % 24 > 0: continue elif zahler % 25 > 0: continue elif zahler % 26 > 0: continue elif zahler % 27 > 0: continue elif zahler % 28 > 0: continue elif zahler % 29 > 0: continue elif zahler % 30 > 0: continue ende = 0 print("Die erste Zahl die sich durch alle Zahlen von 1 bis 30 teilen lässt ist:") print("") print(zahler)

#!/usr/bin/python3 # -*- encoding: utf-8 -*- # #>>>autor: Sebastian Müller #>>>licence: GPL #>>>contact: mypythonmueller@gmail.com # #Programm nach fogender Aufgabenstellung V2.0 #Gesucht wird die erste Zahl, die durch alle Zahlen bis 30 geteilt werden kann(1-30). #Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann. #Dieses ist 232792560 #mein erstes programm noch mal überarbeitet um die geschwindigkeit zu erhöhen print("Programm, das die erste Zahl ermitteln soll, die sich durch alle Zahlen" "von 1-30 teilen lässt.") ende = 1 zahler = 30 * 29 while ende: zahler += 1 if zahler % 1000000 == 0: # print("Alle zahlen überprüft bis: {0:21.0f}Mio.".format(zahler / 1000000)) # if zahler % 30 > 0: continue elif zahler % 29 > 0: continue elif zahler % 28 > 0: continue elif zahler % 27 > 0: continue elif zahler % 26 > 0: continue elif zahler % 25 > 0: continue elif zahler % 24 > 0: continue elif zahler % 23 > 0: continue elif zahler % 22 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 23: ", zahler)) continue elif zahler % 21 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 22: ", zahler)) continue elif zahler % 20 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 21: ", zahler)) continue elif zahler % 19 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 20: ", zahler)) continue elif zahler % 18 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 19: ", zahler)) continue elif zahler % 17 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 18: ", zahler)) continue elif zahler % 16 > 0: print("{0:<23} {1:29d}".format("Teilbar von 30 bis 17: ", zahler)) continue #15 entfällt wegen 30 #14 wegen 28 #13 wegen 26 #usw ende = 0 print("Die erste Zahl die sich durch alle Zahlen von 1 bis 30 teilen lässt ist:") print("") print(zahler)

#Zahlensuche z=30 L=[i for i in range(1,31)] def Teiler(x,L): for i in L: if x%i: return False return True while not Teiler(z,L): z+=30 print(z)

def primfaktorzerlegung(zahl): rest = zahl primfaktoren = [] while rest != 1: a = int(rest ** 0.5) for j in range(2, a + 1): if rest % j == 0: primfaktoren += [j] rest = int(rest / j) break else: primfaktoren += [rest] break return primfaktoren from collections import Counter a = primfaktorzerlegung(2) for i in range(3, 31): b = primfaktorzerlegung(i) c = Counter(a) | Counter(b) a = list(c.elements()) produkt = 1 for i in a: produkt *= i print(produkt)