Problem Set 1.1 ends with a non-prime number? My Code: # Problem Set 1 # Name: Cody Dostal # Collaborators: None # Time: 0:30 # PotentialPrime = 1 divider = 2 primecount = 1 while primecount < 1000: PotentialPrime = PotentialPrime + 2 divider = 2 isnotprime = 0 while divider <= (PotentialPrime/2) and isnotprime == 0: if PotentialPrime%divider == 0: isnotprime = 1 else: divider = divider + 1 if isnotprime == 0: primecount = primecount + 1 print "Potential 1000th prime: " + str(PotentialPrime) + " " + "Prime Count: "
It ends with 7919, which 7919/3 = 2639 and 2639 * 7917 = Woooooooah? hahah
I mean, 2639 * 3 = 7917 = Woaaaaaaaaaaah?
7919/3 is not exactly 2639. It is 2639.6666667. There is a remainder, so is not the same as 2639.0*3.
Yeah, 7919 is correct. Good job! Also, if you dedent the print line all the way out of the first while statement, it will only print the last number. Aslander was pointing out that the way integer division works isn't the way division of real numbers(floats) works. according to integer division, for instance, 5/3 = 1. If you check specifically, you'll find that it's actually 1 modulo(meaning "with the remainder") 2, but the basic thing to understand is that if you divide an integer by another integer, you'll ALWAYS get another integer, regardless of what the answer would be if you were using real numbers.
Thanks. That's crazy, I forgot Python is like that... So if I wanted to show it is prime, I would have to do 7919.0/3? Would that end with showing it is a prime? Thanks!
I'm not sure what you mean by "showing it is a prime." Why would trying to divide it by 3 show that it's prime?
I mean that, to show it is not divisible by 3 as well? I just want to know that real quick for future programs xD
well, if you want to know that a number is NOT evenly divisible by another number, you can check the remainder. So the statement x%3 != 0 would return False if x was evenly divisible by 3 because if it was, the remainder would be 0. the % sign (called the modulo) returns the remainder from integer division.
n4s93: I think you could simply remove one of your IF statements, and add an else statement instead. You don't really need the MAX number either, as you can simply make: while len(primes) < 1000: As for the rest of your idea. Think about it this way - with regards to your code: if i / d has a remainder, then add one to your divisor, until you reach i. In that case, return i as prime, and append your primes list. For either case, you will add a number to both i and d. Since a prime can only be odd, once you find your first prime after 2, you can just add 2 to your prime, and start the sequence all over again for your next i, with d = 2.
@somnamniac: Thank you so much :) I'll edit my code when I'm home and see how that works out :) @Aslander: Huh? hahha
lol - ya for some reason I replied on your question when it was for someone else :-) Sorry dude! Although it is on the same subject...
Yeah haa. I got very confused because of the MAX statement not being in my code, :) That definitely would help, however :)
Join our real-time social learning platform and learn together with your friends!