Python code for generating prime# list and evaluting a number

Click For Summary

Discussion Overview

The discussion revolves around a Python code snippet intended to generate a list of prime numbers and check if a user-provided number is in that list. The focus includes code structure, user input handling, and functionality improvements.

Discussion Character

  • Homework-related
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant questions the placement of user input for checking numbers, suggesting it should occur after the prime list is fully generated.
  • Another participant defends the current structure, stating that repeated prompts for user input are intentional.
  • A further suggestion is made to move the input handling outside of the prime list generation loop for better code organization.
  • A participant shares an updated version of the code that addresses previous feedback and asks for general suggestions on improvements.

Areas of Agreement / Disagreement

Participants express differing views on the structure of the code, particularly regarding the timing of user input prompts. There is no consensus on the best approach to implement this functionality.

Contextual Notes

Some participants mention concerns about memory consumption when generating large prime lists, indicating that the code's efficiency may depend on the range of input values.

mr.me
Messages
49
Reaction score
0

Homework Statement


I am attempting to allow a user to enter a number and check to see if it is in a list of already generated prime numbers Here's my attempt

Where can I put the code to allow the number to be checked, the prime list generator works fine alone
Code:
def buildPrimeList ():
    
    primeList = [1, 2]
    possiblePrime = 3
    print "To calculate a list of prime values less than or equal a number..."

    x=int(raw_input("Enter a number higher then 3   "))
   
    while (possiblePrime <= x):  # changed input method
        divisor = 2
        isPrime = True
        y= int(raw_input("To see if a number is in the list enter that number enter -1 to exit: "))       
        while (divisor < possiblePrime ): #change condition to only less than possible prime
            if ((possiblePrime % divisor) == 0): 
                isPrime = False
          divisor = divisor + 1
        
        if (isPrime):
            primeList.append(possiblePrime)
            print primeList
            
        if y== -1:
            print "Goodbye"
            break
        if y in primeList:
            print y, "Is in the list"
        if y not in primeList:
            print y, "Is not in the list"    
                 
      possiblePrime = possiblePrime + 2
        
            
    return primeList
   
    
buildPrimeList()
 
Last edited:
Technology news on Phys.org
Why are you asking them to enter a number to check if it's in the list before you are done building the list? Why don't you move the y stuff outside of the loop that builds the list?
 
The user is supposed to be repeatedly prompted, that is why the y=raw_input is in the loop
 
It's still in the wrong place. Make a loop outside of buildPrimeList and put your input there.
 
Thanks,

I did this and it works well enough, any general suggestions on the code

Code:
def buildPrimeList ():
    
    primeList = [1, 2]
    possiblePrime = 3
    print "To calculate a list of prime values less than or equal a number..."
    
    x=int(raw_input("Enter a number higher then 3   "))
    
    while  (possiblePrime <= x):  # for personal preference changed range to raw_input, so that the range can be arbitrary, though at a certain point a large range will consume a-lot of memory
        divisor = 2
        isPrime = True
              
        while (divisor < possiblePrime ):
            if ((possiblePrime % divisor) == 0): 
                isPrime = False
            divisor = divisor + 1
        if (isPrime):
            primeList.append(possiblePrime)
        
        possiblePrime = possiblePrime + 2
    while (primeList==primeList):   
        y= int(raw_input("To see if a number is in the list enter that number enter -1 to exit: "))    
        if y== -1:
            print "Goodbye"
            break
        if y in primeList:
            print y, "Is in the list"
        if y not in primeList:
            print y, "Is not in the list"
           
    return primeList
 

Similar threads

  • · Replies 28 ·
Replies
28
Views
5K
Replies
5
Views
2K
  • · Replies 7 ·
Replies
7
Views
6K
  • · Replies 29 ·
Replies
29
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 11 ·
Replies
11
Views
1K
  • · Replies 13 ·
Replies
13
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K