Permalänk
Medlem

Python problem [Hjälp]

Har precis börjat läsa en grundkurs i python och har kört fast.

"Minsta positiva heltalet som är jämt delbart med siffrorna 1 till och med 13"

Någon som vet hur man gör detta?

Visa signatur

Asrock X58 Extreme III | Intel Core i7 950 + Thermalright Ultima-90I | GTX 580 | 6GB DDR3 Corsair XMS3 | OCZ Vertex II SSD 120GB x 2 @RAID0 |

Permalänk
Medlem

Minsta gemensamma nämnare -> http://sv.wikipedia.org/wiki/Minsta_gemensamma_n%C3%A4mnare
se exempel1: är precis vad du vill göra.

sgd -> http://sv.wikipedia.org/wiki/St%C3%B6rsta_gemensamma_delare
där finns tips hur man löser sgd-problemet.

Borde komma rätt långt med ovanstående länkar.

Permalänk
Medlem

En enkel så kallad bruteforce algoritm vore följande:

för varje heltal X större än eller lika med 1: för varje heltal Y i omfånget 1 t.om. 13: om divisionen X/Y resulterar i en rest, hoppa till nästa X eftersom alla Y har visat sig ge resten noll då X delats så returnerar vi X

Visa signatur

weeeee

Permalänk
Medlem

Tydligen ska uppgiften lösas med en while loop och en for loop i inne while loopen...

Visa signatur

Asrock X58 Extreme III | Intel Core i7 950 + Thermalright Ultima-90I | GTX 580 | 6GB DDR3 Corsair XMS3 | OCZ Vertex II SSD 120GB x 2 @RAID0 |

Permalänk
Medlem
Skrivet av fraze86:

Tydligen ska uppgiften lösas med en while loop och en for loop i inne while loopen...

while-loop och for-loop är ekvivalenta
ändra algoritmen jag beskrev till:

svar=0 lösning funnen = falskt while lösning ej funnen: svar = svar+1 lösning funnen = sant for varje tal 1 t.om. 13: om inte tal delar svar jämt: lösning funnen = falskt bryt for-loopen skriv ut svar

Visa signatur

weeeee

Permalänk
Medlem
Skrivet av mounte:

while-loop och for-loop är ekvivalenta

Är du helt säker på det påståendet?

"for" itererar över en bestämd mängd, medan while loopar så länge ett påstående är sant (kan ske i oändlig tid)

Visa signatur

Wow. PIII och Voodoo. Back to old days

Permalänk
Medlem

Nima_P, det är rätt att en for-loop i python itererar över en mängd. Denna mängd spottas ut medels en iterator på det givna objektet.
Du kan t.ex. använda en for loop över en generator som spottar ur sig rader från en ström över tcp-ip, denna kommer leva "förevigt".
Ett annat exempel är att använda count() ur itertools se http://docs.python.org/library/itertools.html

import itertools for i in itertools.count(): print i

Kort algoritmisk beskrivning av konvertering mellan for och while: http://en.wikipedia.org/wiki/For_loop#Equivalence_with_while_...

tillägg
Visa signatur

weeeee

Permalänk
Medlem

Facit, eller tänker jag helt fel nu?
http://www.wolframalpha.com/input/?i=lcm+1%2C2%2C3%2C4%2C5%2C...

Edit: Självklart löser ju detta inte kodandet, men är man osäker så är det ju en bra hjälp att i alla fall veta _vad_ man ska ha ut som korrekt svar!

Permalänk
Medlem

Helt korrekt BasseBaba,
risken är att dom inte gått igenom gcd eller lcm som kräver lite mer algoritmisk förståelse än bruteforce metoden.
Kodexempel på lcm och gcd finns t.ex. på SO: http://stackoverflow.com/questions/147515/least-common-multip...

Visa signatur

weeeee