2014-06-27 8 views
-1

Hey personnes python génial,Python: trouver le plus grand nombre premier de X

Avertissement: Je suis nouveau au codage. Ok, maintenant que vous avez été averti ...

J'essaye d'écrire un fichier python qui trouve le plus grand nombre premier d'une variable que je déclare dans le code.

Voici mon processus de pensée:

Step 1:Find Factors of X 
Step 2:Put factors of X in an array a 
Step 3:Analyze last element of array a 
Step 4:Check if last element of array a is Prime 
Step 5: if last element of array a is prime print "found the largest prime" along with the number itself, else, analyze second to last element in array a, and so on until at a[1] 
Step 6: if no prime numbers in array, print "no primes found" 

La question est quelque part dans la dernière déclaration d'autre, en traitant avec x = 28 et ses facteurs dans un tableau: [1, 2, 4, 7, 14] mon code pense 7 est pas premier ...

Mes étapes sont énumérées en ligne:

#find factors, put them in an array a 

#1.Find factors of X 
#2.Put factors of X in an array a 

x=28 
i=1 
a=[] 
length = 0 

while i<x:  
    if x%i == 0: #checks to see if X is divisible by anything between 1 and X-1 
     a.append(i) #adds factor to array a 
    i = i+1   

print "your factors are: ", "\n", a 
print "\n" 


#3. Analyze the last element in array a 
# Before loop below, a = [1, 2, 4, 7, 14] and length = 5 

length = 0 
length = len(a) 
n=a[length-1]-1 
print "checking for primes in your array now...", "\n" 

while len(a) > 2: 
    if a[length-1]%n != 0:  
     n=n-1 
     if n == 1: 
      print "PRIME TIME" 
      break 
    else: 
     print a[length-1], "is not a prime" #added 
     del a[-1] 
     length = len(a) 
     print "length = ",length 
     if length == 2: 
      print "NO Primes" 

quelques questions:

  • Comment vous réassigner des variables telles que x, entre autres [], et n pour rendre le code plus lisible

  • Dans la deuxième boucle, après la première itération, l'analyse de 7 pourquoi le code ne Reconnaître que c'est un nombre premier?

Merci beaucoup pour vos commentaires constructifs !!

+0

Je pense que cette question convient mieux à la révision de code. http://codereview.stackexchange.com/ – shuttle87

+0

Voici un indice général de programmation - nommez vos variables aussi expressément que possible, de cette façon vous saurez exactement ce qu'elles sont et ce qui devrait leur arriver. – MattDMo

+0

@MattDMo: Non, ce n'est pas toujours un bon conseil. –

Répondre

2

Ok, je le ferais comme ceci:

def primes(n): 
    primfac = [] 
    d = 2 
    while d*d <= n: 
     while (n % d) == 0: 
      primfac.append(d) 
      n /= d 
     d += 1 
    if n > 1: 
     primfac.append(n) 
    return primfac 

print "Factors: ", primes(28) 
print "The largest is: ", max(primes(28)) 

d'abord utiliser la fonction primes que je pris de here. Il retourne un tableau contenant tous les facteurs premiers. Ensuite, il suffit d'appuyer sur max-function, ce qui vous donne le plus grand élément du tableau.

La sortie est la suivante:

Factors: [2, 2, 7] 
The largest is: 7 

J'espère que cela aide.

Questions connexes