Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Your <code>d</code> variable is being reset during each iteration of your outer loop. Move the initialization out of that loop.</p> <p>Additionally, the <code>a == 2</code> check should only occur once per iteration of the outer loop. Move it out of the inner loop.</p> <pre><code>b=1 d = 0 #generates a list of numbers. while b&lt;100: b=b+1 x = 0.0 a = 0 #generates a list of numbers less than b. while x&lt;b: x=x+1 #this will check for divisors. if (b/x)-int(b/x) == 0.0: a=a+1 if a==2: #if it finds a prime it will add it. d=d+b print d </code></pre> <p>Result:</p> <pre><code>1060 </code></pre> <p>While we're at it, let's try cleaning up the code so it's more comprehensible. You can move the inner loop into its own function, so readers can more clearly understand its purpose:</p> <pre><code>def is_prime(b): x = 0.0 a = 0 while x&lt;b: x=x+1 #this will check for divisors. if (b/x)-int(b/x) == 0.0: a=a+1 if a==2: return True else: return False b=1 d=0 #generates a list of numbers. while b&lt;100: b=b+1 if is_prime(b): d=d+b print d </code></pre> <p>It's also useful to use variable names that describe what they represent:</p> <pre><code>def is_prime(number): candidate_factor = 0 amount_of_factors = 0 while candidate_factor&lt;number: #A += B is equivalent to A = A + B candidate_factor += 1 #A little easier way of testing whether one number divides another evenly if number % candidate_factor == 0: amount_of_factors += 1 if amount_of_factors == 2: return True else: return False number=1 prime_total=0 #generates a list of numbers. while number&lt;100: number += 1 if is_prime(number): prime_total += number print prime_total </code></pre> <p><code>for</code> loops are more idomatic than <code>while</code> loops that increment a counter:</p> <pre><code>def is_prime(number): amount_of_factors = 0 for candidate_factor in range(1, number+1): if number % candidate_factor == 0: amount_of_factors += 1 if amount_of_factors == 2: return True else: return False prime_total=0 #generates a list of numbers. for number in range(2, 101): if is_prime(number): prime_total += number print prime_total </code></pre> <p>If you're feeling bold, you can use list comprehensions to cut down on the number of loops you use:</p> <pre><code>def is_prime(number): factors = [candidate_factor for candidate_factor in range(1, number+1) if number % candidate_factor == 0] return len(factors) == 2 #generates a list of numbers. primes = [number for number in range(2, 101) if is_prime(number)] prime_total = sum(primes) print prime_total </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload