Determina se um número é perfeito, abundante ou deficiente, com base no esquema de classificação de Nicómaco (60 - 120 d.C.) para números inteiros positivos.
O matemático grego Nicómaco concebeu um esquema de classificação para os números inteiros positivos, identificando cada um como pertencendo de forma única às categorias de perfeito, abundante ou deficiente, com base na sua soma dos divisores próprios.
A soma dos divisores próprios é definida como a soma dos fatores de um número, sem incluir o próprio número.
Por exemplo, a soma dos divisores próprios de 15 é 1 + 3 + 5 = 9.
Um número é perfeito quando é igual à sua soma dos divisores próprios. Por exemplo:
6 é um número perfeito porque 1 + 2 + 3 = 6
28 é um número perfeito porque 1 + 2 + 4 + 7 + 14 = 28
Um número é abundante quando é menor do que a sua soma dos divisores próprios. Por exemplo:
12 é um número abundante porque 1 + 2 + 3 + 4 + 6 = 16
24 é um número abundante porque 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
Um número é deficiente quando é maior do que a sua soma dos divisores próprios. Por exemplo:
8 é um número deficiente porque 1 + 2 + 4 = 7
Implementa uma forma de determinar se um determinado número é perfeito. Dependendo da linguagem que estás a aprender, podes também ter de implementar uma forma de determinar se um determinado número é abundante ou deficiente.
Neste exercício, vamos supor que queremos que seja quem chama a função a garantir que só passa a classify um valor de entrada diferente de zero.
Por isso, faz com que a função classify use um assert para garantir que o seu valor de entrada é diferente de zero.
Para mais detalhes, consulta a Zig Language Reference e a implementação de std.debug.assert.
No entanto, repara que este exercício ainda não testa um valor de entrada de 0 (porque o std.testing ainda não suporta esperar um pânico).
Inscreve-te no Exercism para aprenderes e dominares Zig com 104 exercícios, e mentoria humana real, tudo grátis.