Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como implementar um programa para fatorar um número?

+1 voto
3,050 visitas
perguntada Mar 18, 2016 em Programação Computacional por danielcajueiro (5,581 pontos)  
Compartilhe

2 Respostas

+1 voto
respondida Mar 18, 2016 por danielcajueiro (5,581 pontos)  

Uma implementação simples em Python:

import math

def factor(n):
  if ( n == 0):
    return None
  elif(n==1):
      return 1
  else:    
      theFactors = []
      for i in range(2,n+1):          
          while n % i == 0:
              n = n/i
              theFactors.append(i)
      return theFactors


if __name__ == '__main__':
    print factor(1001)
comentou Mar 21, 2020 por Carla Ávila (1 ponto)  
Não estou conseguindo implementar este código no Python. A mensagem de erro é a seguinte:
>>> import math
>>> def factor(n):
...   if ( n == 0):
...     return None
...   elif(n==1):
...       return 1
...   else:
...       theFactors = []
...       for i in range(2,n+1):
...           while n % i == 0:
...               n = n/i
...               theFactors.append(i)
...      return theFactors
  File "<stdin>", line 12
    return theFactors
                    ^
IndentationError: unindent does not match any outer indentation level
>>>       return theFactors
  File "<stdin>", line 1
    return theFactors
+1 voto
respondida Jun 23 por viniwata1 (6 pontos)  
editado Jun 23 por viniwata1

Caso alguém tenha algum problema acerca da resolução proposta pelo professor Daniel: na última linha, em vez de

 print factor(1001)

escreva

print(factor(1001))

Outra resolução que pode ser útil :

def print_fatores(n):
   print("Os fatores de",n,"são:")
   for i in range(1, n+1):
       if n % i == 0:
           print(i)

num = 1001

print_fatores(num)
comentou Jun 24 por danielcajueiro (5,581 pontos)  
Verdade, antes no python era assim!
...