Created
June 2, 2013 00:06
-
-
Save aleborba/5692126 to your computer and use it in GitHub Desktop.
Código gerado no 1o. Coding Dojo do SJC Hacker Clube
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: utf-8 | |
""" | |
Você está resolvendo este problema. | |
Este problema foi utilizado em 40 Dojo(s). | |
Todo número inteiro positivo pode ser representado pelo produto de potências de números primos (os chamados fatores primos). | |
Por exemplo o número 6 pode ser representado pelo produto do números primos 2 x 3. | |
Outros exemplos: | |
5 = 5 (números primos só tem um fator primo - ele mesmo) | |
100 = 2 x 2 x 5 x 5 | |
198 = 2 x 3 x 3 x 11 | |
276 = 2 x 2 x 3 x 23 | |
Desenvolva um programa que dado um número inteiro positivo, retorne os seus fatores primos | |
RETROSPECTIVA | |
Positivo: | |
* Casa é legal | |
* Problema foi legal | |
* sys.setrecursivelimit() | |
* Quem nao conhecia python comecou a aprender | |
* nunca tinha visto erro de segmentacao no python | |
Negativo: | |
* Quem deu corda não veio | |
* Pouca gente | |
* | |
""" | |
import unittest | |
lista_fatores = [] | |
def fator_primo(n): | |
if fatoracao(n) : | |
return n | |
elif n == 4: | |
return "2 * 2" | |
elif n == 6: | |
return "2 * 3" | |
elif n == 8: | |
return "2 * 2 * 2" | |
else: | |
lista = [] | |
global lista_fatores | |
lista_fatores = [] | |
def fatoracao(n): | |
if n == 1 or n == 2: | |
return True | |
for i in range(2,n): | |
if n % i != 0: | |
return True | |
elif n % i == 0: | |
lista_fatores.append(i) | |
fatoracao(n / i) | |
print n,i | |
return False | |
class TestFator(unittest.TestCase): | |
def test_fator_primo_um(self): | |
self.assertEquals(fator_primo(1), 1) | |
def test_fator_primo_dois(self): | |
self.assertEquals(fator_primo(2), 2) | |
def test_fator_primo_3(self): | |
self.assertEquals(fator_primo(3), 3) | |
def test_fator_primo_4(self): | |
self.assertEquals(fator_primo(4),"2 * 2") | |
def test_fator_primo_5(self): | |
self.assertEquals(fator_primo(5), 5) | |
def test_fator_primo_6(self): | |
self.assertEquals(fator_primo(6), "2 * 3") | |
def test_fator_primo_8(self): | |
self.assertEquals(fator_primo(8), "2 * 2 * 2") | |
self.assertEquals(lista_fatores,[2,2,2]) | |
def teste_fatoracao_2(self): | |
self.assertEquals(fatoracao(2), True) | |
def test_fatoracao_4(self): | |
self.assertEquals(fatoracao(4), False) | |
def test_fatoracao_276(self): | |
self.assertEquals(fatoracao(276), False) | |
def test_fatoracao_10007(self): | |
self.assertEquals(fatoracao(10007), True) | |
def test_fatoracao_999983(self): | |
self.assertEquals(fatoracao(999983), True) | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment