MIT 6.00 Intro Computer Science (OCW) OpenStudy (anonymous):

ps1.2 - logarithm of prime numbers - where i am stuck. plz help... OpenStudy (anonymous):

from math import * n = 2 Goal = int(raw_input('Please input a prime number to count ')) TotLn = 0 ##sum of log(prime)s so far def isprime(n): ## defines a prime number if n == 2: return 1 ## 2 is prime if n % 2 == 0: return 0 ## all other evens are not prime max = n**0.5+1 i = 3 while i <= max: ## determines if remaining odd numbers are if n % i == 0: ## composite return 0 i += 2 return 1 while n < Goal: ## produces a list of prime numbers n, Goal if isprime(n) == 1: print n NewLn = log(n) ##defines NewLn as log of current n print NewLn elif isprime(n) == 0: pass n += 1 TotLn += NewLn ##adds NewLn to the sum of previous logs print TotLn if n == Goal: NewLn = log(n) TotLn += NewLn print 'n = ', n print 'log(n) = ', log(n) print 'sum of logs of primes up to n =', TotLn print 'the ratio between the two =', n/TotLn OpenStudy (anonymous):

the problem i am having is that it adds too many times to TotLn Please input a prime number to count 5 2 0.69314718056 0.69314718056 3 1.09861228867 1.79175946923 2.8903717579 n = 5 log(n) = 1.60943791243 sum of logs of primes up to n = 4.49980967033 the ratio between the two = 1.11115810808 >>> log(5) 1.6094379124341003 OpenStudy (anonymous):

so you see there, it prints the prime number, then it's log, then TotLn, which works for 2, but when it gets to three it seems as if it's adding twice. OpenStudy (anonymous):

here is an update with some context in the prints Please input a prime number to count 7 this is the current iteration of n, 2 this is the log of the current iteration of n, 0.69314718056 this is the total of all logs so far, 0.69314718056 this is the current iteration of n, 3 this is the log of the current iteration of n, 1.09861228867 this is the total of all logs so far, 1.79175946923 this is the total of all logs so far, 2.8903717579 this is the current iteration of n, 5 this is the log of the current iteration of n, 1.60943791243 this is the total of all logs so far, 4.49980967033 this is the total of all logs so far, 6.10924758276 n = 7 log(n) = 1.94591014906 sum of logs of primes up to n = 8.05515773182 the ratio between the two = 0.869008433236 OpenStudy (anonymous):

so it seems as if it is adding NewLn to TotLn twice. and i have no idea why. OpenStudy (anonymous):

oops nevermind i figured it out. looks like placing it in the form of a question on here made me think of it in a new context. hahahah OpenStudy (anonymous):

I soooo identify with that last observation about posting a problem and then having the answer come to me. It's happend to me a ton of times. And if I may make a suggestion about style... It's more "Pythonic" to return True or False from isPrime(). Then you can just say "if isPrime():". The way you have it looks like a C programmer would write it, since C has no such thing as True or False. OpenStudy (anonymous):

I feel like such the newb. :-) I'll post my code - I used a list to do everything, so my log sums was pretty easy. import math somelist = [] for x in range(1,10000): somelist.append(x) somelist.remove(1) for q in range(2,int(math.sqrt(10000)+1)): for y in (somelist): if y%q == 0: if y >= 4 and y !=q: somelist.remove(y) while len(somelist) > 1000: somelist.remove(somelist[-1]) print "1000th Prime is:", somelist[-1] z = 0 for a in somelist: #z = z + math.log(a,2) #Sum of logs, base 2. z = z + math.log(a) print "Sum of all those logs:",z OpenStudy (anonymous):

I am going to rewrite this code to accomplish it without the lists...wish me luck! OpenStudy (anonymous):

ps. Any constructive criticism of my code is welcomed! OpenStudy (anonymous):

One thing I noticed right off is the way you build somelist. if you just replace everything from "somelist = []" to "somelist.remove(1) with the single line "somelist = range(2, 10000), you'll get the same result in a much cleaner way. OpenStudy (anonymous):

Good point Radly...being completely green in the programming world, these are things I like to know. Sometimes it's hard to be critical of your own code, and I tend to miss the simple things.

Latest Questions n32carrillo: i need help
12 minutes ago 4 Replies 0 Medals MiamiHeat23: Can anyone help me wit Latex? or bb code
33 seconds ago 83 Replies 4 Medals Adrianamak: Bottles of wine are stacked in racks of 12. The weights of these bottles are normally distributed with mean 1.
46 minutes ago 0 Replies 0 Medals Speedy: How is everyone im new :) i just seeing what this is
49 minutes ago 28 Replies 2 Medals Kaloy69: Oral communication in context
48 minutes ago 2 Replies 0 Medals hiiiihiiiiiiiiii: Tell me what you thank I wht it by myself hope you like it When I look in your eyes all I want to do is cry ya ya when I see you all i wanna do is cry when
1 hour ago 14 Replies 1 Medal jhonyy9: Hi math fun's ! please opinions about this : than i can prove that always there e
1 hour ago 1 Reply 2 Medals TrumpPence2020: What engines are compatible with the 1995 Ford Bronco?
1 hour ago 10 Replies 3 Medals Timmyspu: Thank you for all that showed up for question cove game night.
43 minutes ago 14 Replies 3 Medals eelyaK11: A NASA spacecraft once landed on the surface of the asteroid named 433 Eros.This asteroid is near Earth and has an average orbital speed of 24.
2 hours ago 10 Replies 1 Medal