segunda-feira, 9 de abril de 2018

Dinamica 002 - Fatoração em números primos

Segundo o Teorema Fundamental da Aritmética, todo número maior que 1 pode ser decomposto em um produto de números primos. O problema desta dinâmica é criar um programa que, dado um valor N entrado pelo usuário, este seja fatorado em números primos e estes números sejam impressos na tela.


"Dizia eu que a aritmética... "



Para ajudar a resolução do problema, divide-se o desenvolvimento do programa em 5 etapas:

Etapa 1

Crie uma função, dado um valor X, verifica-se se X é um numero primo.
Por exemplo, se o usuário entra com o valor X = 3, deve-se retornar 1, pois 3 é primo. Se o usuário entra com o valor X = 4, deve-se retornar 0, por 4 não é primo.

Etapa 2

Utilizando a primeira função, crie outra que retorna, dado o valor i, o i-ésimo numero primo, lembrando que 1 não é primo.
Por exemplo, se o usuário entra com o valor i = 1, deve-se retornar 2, pois o primeiro numero primo é 2. Se o usuário entrar com o valor i = 7, deve-se retornar 13, pois o sétimo numero primo é 13.

Etapa 3

Na função principal, crie uma rotina que divide o numero N entrado pelo usuário por 2 e atribui o resultado em N, até que N não seja mais divisivel por 2.
Por exemplo, se o usuário entra com o número N = 60, deve-se divide por 2 e atribuir o resultado em N ficando 30, em seguida, repete-se a divisão até que N = 15. Como 15 não é divisível por 2, neste momento para-se as divisões.

Etapa 4

Modifique a rotina criada na etapa anterior, colocando outra estrutura de repetição que incrementa P, de modo que quando N deixar de ser divisivel por P, P torna-se o próximo numero primo. Lembrando que P deve começar por 2, já que 2 é primo.
Por exemplo, quando N = 60, divide-se por 2 até que N = 15. Depois divide-se por 3 até que N = 5, e depois por 5 até que N = 1.

Etapa 5

Finalmente elabore um programa em C que resolva o problema enunciado ao topo.



Provavelmente o programa feito nessas etapas não será o mais eficiente possível para se resolver o problema, mas acredito que o processo ficou bem didático. Melhorias no código podem ser feitas depois.

Nenhum comentário:

Postar um comentário