Algoritmo de Fatoração de Fermat (FFA) em Ruby

FFA: Fermat Factoring Algorithm (Algoritmo de Fatoração de Fermat) Método de fatoração inventado por Pierre de Fermat: Todo numero pode ser escrito como diferença de dois números elevados ao quadrado: n = a² - b², ou n = a*a - b*b; Esta expressão pode ser escrita como n = (a+b) * (a-b), ou n = (a+b) (a-b), onde a soma e a subtração dos valores "a" e "b" são dois fatores do número em questão. Se n é primo, então a-b = 1 e a+b=n; Para números com diversos fatores e divisores existem diversos "a" e "b" que satisfazem a expressão. Este algoritmo testa em progressão diversos valores "b" em "i + j*j", ou i + j², com i=n no primeiro passo. Se i + j*j for um quadrado perfeito, então calcula-se com base nisto os correspondentes a e b da expressão anterior, tendo-se então encontrado um fator. Fator este que não é necessariamente um número primo. Este programa trabalha com os fatores sendo escritos em uma lista, sendo pegos um a um até o final. A função de fatoração retorna uma estrutura com um par de números que se multiplicados retornam o valor de entrada, ordenados em maior e menor. No retorno, a parcela menor substitui a posição do elemento pego anteriormente e a parcela maior é inserida ao fim da lista principal. Quando o valor menor do par é um, o valor maior é um número primo, então continua-se com o próximo elemento da lista principal, encerrando-se ao último elemento. Por último, a lista de fatores é ordenada para apresentação. Obs[1]: Por enquanto não fatora números negativos. Obs[2]: É possível ainda um teste que reduz o número de repetições do while da sub-rotina.

Por: Perfil removido


Função "Partição de Inteiros" Recursiva SEM Tabela Estática em C

De quantos modos diferentes pode-se escrever 6 como soma de números maiores que zero? 6 = 5+1 = 4+2 = 3+3 = 4+1+1 = 3+2+1 = 2+2+2 = 3+1+1+1 = 2+2+1+1 = 2+1+1+1+1 = 1+1+1+1+1+1 11 modos diferentes. p(6) = 11. O cálculo do número de partições de um inteiro usa uma recursão bem mais demorada que a dos números de Fibonacci ou a fatorial. Este exemplo usa a recursão pura e simples sem armazenar os valores já calculados, necessitando de um novo cálculo a cada chamada. Isto porque pelo método de recursão, ela pode ter a necessidade de calcular valores anteriormente calculados. Quanto maior o valor requerido, maior o tempo. Quem não tiver saco de esperar a eternidade de cálculo para os valores deste código, sugiro modificar para um tempo que não seja tão cansativa a demora. Parte dos resultados pode ser conferida neste link: http://oeis.org/A000041

Por: Perfil removido


Loop de Várias Váriáveis Em Um Único Laço "For" em C

Das vezes que costumei usar sempre deu certo. :-) Apenas um truque para não ter que escrever três, quatro laços "for" aninhados. Pode ser modificado para uso com array criando-se instantaneamente múltiplas variáveis no loop. Aqui no caso trata-se apenas de um contador com alguma coisa que chama a atenção para o hexadecimal. Possivelmente improvisa-se algo com sequências em binário.

Por: Perfil removido


Planilha de cálculo para multa judicial

Esta planilha é do OpenOffice e realiza o cálculo da multa judicial diária usando as funções DIAS(), HOJE() e SOMA() para calcular o intervalo de datas, o valor total etc.

Por: Perfil removido


Interface para tarefas básicas

Script básico que criei para fazer algumas tarefas, são elas: - Mostrar informações sobre a CPU - Mostrar informações sobre a memória - Instalar pacotes .deb - Ver processos em execução - Matar um processo em execução - Descompactar arquivos zip ,rar ,tar ,tar.gz, e tar.bz2 No futuro adicionarei mais funções ;)

Por: Perfil removido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts