Python :: Aufgabe #54

6 Lösungen Lösungen öffentlich

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

Lösungen:

1x
vote_ok
von jigga (4260 Punkte) - 13.06.2015 um 08:54 Uhr
Quellcode ausblenden Python-Code
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]))
vote_ok
von FCBFAN2000 (370 Punkte) - 14.06.2015 um 09:23 Uhr
Quellcode ausblenden Python-Code
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
vote_ok
von AnnaIhrs (460 Punkte) - 28.06.2016 um 18:04 Uhr
Quellcode ausblenden Python-Code
#!/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)
vote_ok
von AnnaIhrs (460 Punkte) - 30.06.2016 um 11:56 Uhr
Quellcode ausblenden Python-Code
#!/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)
vote_ok
von 0 (0 Punkte) - 01.10.2017 um 18:16 Uhr
Quellcode ausblenden Python-Code
#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)
vote_ok
von satn1241 (3090 Punkte) - 17.06.2020 um 19:14 Uhr
Quellcode ausblenden Python-Code
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)