Ir para conteúdo
Fórum CódigoFonte.net
thiago.r

Tradução Python x Java

Recommended Posts

Olá bom tenho um código de um programa em python para resolver a seguinte questão:

3- Qual é o primeiro número triangular que possui mais de 500 divisores?

A seqüência dos números triangulares é gerada somando-se os números naturais. Assim, o sétimo

número triangular é 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Os dez primeiros termos são:

1, 3, 6, 10, 15, 28, 36, 45, 55, ...

Segue o código :

""" Exercicio 3

Qual e o primeiro numero triangular que possui mais de 500 divisores?

Autor: Thiago R. Engel """

class Exercicio3:

""" Terceiro Exercicio da Lista 2. """

def __init__(self, limite):

""" Instancie um objeto passando um limite de divisores. """

i = 0

soma = 0

divisores = 1

while divisores < limite:

i += 1

soma += i

if soma > 2:

divisores = self.__numeroDivisores(self.__getAtomos(soma))

# Atributo de objeto para armazenamento do resultado

self.resultado = soma

def getResultado(self):

""" Retorna o resultado da operacao """

return self.resultado

def __crivo(self, valor):

""" Crivo de Eratostenes

Cria-se uma lista e por eliminicao descreve-se quem e primo ou nao. """

limite = valor + 1

primos = [True] * limite

retorno = []

for i in range(2, limite):

if primos:

for j in range(i * i, limite, i):

primos[j] = False

# Monta a lista de retorno somente com os primos do numero limite

for i in range(2, limite):

if primos:

retorno.append(i)

return retorno

def __getAtomos(self, valor):

""" Pegar Atomos

Decompoe-se o valor de acordo com seus primos e recolhe-se os atomos. """

primos = self.__crivo(valor)

atomos = []

while valor > 1:

for i in primos:

if valor == 1:

break

if valor % i == 0:

atomos.append(i)

valor = valor / i

break

# Ordena ascendente

atomos.sort()

return atomos

def __numeroDivisores(self, atomos):

""" Numero de Divisores

Atraves dos atomos de um numero e possivel saber sua quantidade de

divisores. """

numeros = [1, ]

ant = 0

for atomo in atomos:

if atomo != ant:

tmp = []

tmp.extend(numeros)

for numero in tmp:

numeros.append(atomo * numero)

else:

numeros.append(atomo * numeros[-1])

Não tenho muito conhecimento em java gostária que alguem pudesse me ajudar estou um pouco perdido.

desde já agradeço !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...

×
×
  • Criar Novo...