Ask your own question, for FREE!
MIT 6.00 Intro Computer Science (OCW) 19 Online
OpenStudy (anonymous):

Hi guys, i have completed the firstproblem in ps 1..got the output ..i want someone to take a look and give any suggestions ..i think my coding was too naive compared to other programs here.... thanks in advance...

OpenStudy (anonymous):

primecount=0 testnumber=3 divisor=2 while(testnumber%2!=0): while(divisor<testnumber): if testnumber%divisor!=0: divisor=divisor+1 else: break else: primecount=primecount+1 if(primecount==999): print testnumber break testnumber=testnumber+2 divisor=2

OpenStudy (anonymous):

I think it looks pretty good. The only thing is it looks as though it will test for a divisor up to one less than the testnumber. Ex. testnumber is 999, divisor will test to 998, which you do not need to do. You can stop the divisor much earlier. This would only make a difference the higher your testnumber becomes.

OpenStudy (anonymous):

That will work, though I dislike the use of the else clause on loops as I find them very difficult to read. I much prefer the use of boolean variables as controls. primecount=1 # we're starting at 3, so we add 1 to our count for 2 (the first prime) testnumber=3 while primecount < 1000: # find the 1000th prime divisor=2 divisorFound = False while (divisor<testnumber) and (not divisorFound): if testnumber%divisor==0: divisorFound = True divisor = divisor + 1 if divisorFound: primecount = primecount + 1 testnumber=testnumber+2

OpenStudy (anonymous):

blah.. this interface is terrible at formatting code. that divisor = divisor + 1 line should be unindented to the same level as the if not in the if's block.

OpenStudy (anonymous):

thankyou..the interface of this website was too bad.....your program was neat

OpenStudy (anonymous):

i think you are also using all the divisors less than the number ..its not needed and it takes more time ....using squareroot saves more compilation time...

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!