Determine se um número é perfect, abundant ou deficient, com base no esquema de classificação de Nicômaco (60 - 120 d.C.) para os números inteiros positivos.
O matemático grego Nicômaco criou um esquema de classificação para os números inteiros positivos, identificando cada um como pertencente de forma única às categorias perfect, abundant ou deficient, com base na sua soma dos divisores próprios.
A soma dos divisores próprios é definida como a soma dos divisores 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 é perfect quando é igual à sua soma dos divisores próprios. Por exemplo:
6 é um número perfect porque 1 + 2 + 3 = 6
28 é um número perfect porque 1 + 2 + 4 + 7 + 14 = 28
Um número é abundant quando é menor que a sua soma dos divisores próprios. Por exemplo:
12 é um número abundant porque 1 + 2 + 3 + 4 + 6 = 16
24 é um número abundant porque 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
Um número é deficient quando é maior que a sua soma dos divisores próprios. Por exemplo:
8 é um número deficient porque 1 + 2 + 4 = 7
Implemente uma forma de determinar se um dado número é perfect. Dependendo da sua trilha de linguagem, você também pode precisar implementar uma forma de determinar se um dado número é abundant ou deficient.
Neste exercício, digamos que queremos que quem chama seja responsável por chamar classify apenas com uma entrada diferente de zero.
Então, faça com que a função classify faça um assert de que a entrada é diferente de zero.
Para mais detalhes, veja a Referência da Linguagem Zig e a implementação de std.debug.assert.
No entanto, observe que este exercício atualmente não testa uma entrada igual a 0 (porque o std.testing ainda não dá suporte a esperar por um panic).
Crie sua conta no Exercism para aprender e dominar Zig com 104 exercícios e mentoria humana de verdade, tudo de graça.