Exercicio Algoritimo

1. Exercicio Algoritimo

Willian
willianfalk

(usa Outra)

Enviado em 19/07/2021 - 11:57h


Boa tarde, fiz uma prova de algoritmos, e de jeito nenhum consegui resolver uma questão. estou extremamente frustrado. e gostaria muito de saber a resolução dela. que o professor não disponibilizou. segue exercício.


2) No século I d.C., havia, além da divisão dos números perfeitos, os números abundantes e os reduzidos: (valor: 3,0 pts)
–Perfeitos: se o número é igual à soma de seus divisores próprios;
Por exemplo, 6: 1 + 2 + 3 = 6.
–Abundantes: se o número é inferior à soma dos seus divisores exceto ele próprio;
Por exemplo, 12: 1 + 2 + 3 + 4 + 6 = 16.
–Reduzidos: se o número é superior à soma dos seus divisores exceto ele próprio; Por exemplo, 9: 1 + 3 = 4. Faça um algoritmo no qual em seu programa principal lê um valor inteiro que será o final do intervalo de busca que começa em 1.
Em procedimento específico que recebe parâmetro, imprima a lista de todos os inteiros neste intervalo, classificando-os em abundantes, reduzidos ou perfeitos. Apresente também seus divisores e somatória dos mesmos. Não utilize variável global. Exemplo: caso o usuário informe 15 como final de intervalo, seu programa deve apresentar exatamente o seguinte:
1:-- Soma:0 O numero 1 é reduzido!
2:-1-- Soma:1 O numero 2 é reduzido!
3:-1-- Soma:1 O numero 3 é reduzido! 4:-1-2-- Soma:3 O numero
4 é reduzido! 5:-1-- Soma:1 O numero
5 é reduzido! 6:-1-2-3-- Soma:6 O numero
6 é perfeito! …
12:-1-2-3-4-6-- Soma:16 O numero 12 é abundante! …
15:-1-3-5-- Soma:9 O numero 15 é reduzido!


  


2. Re: Exercicio Algoritimo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/07/2021 - 22:33h

willianfalk escreveu:


Boa tarde, fiz uma prova de algoritmos, e de jeito nenhum consegui resolver uma questão. estou extremamente frustrado. e gostaria muito de saber a resolução dela. que o professor não disponibilizou. segue exercício.


2) No século I d.C., havia, além da divisão dos números perfeitos, os números abundantes e os reduzidos: (valor: 3,0 pts)
–Perfeitos: se o número é igual à soma de seus divisores próprios;
Por exemplo, 6: 1 + 2 + 3 = 6.
–Abundantes: se o número é inferior à soma dos seus divisores exceto ele próprio;
Por exemplo, 12: 1 + 2 + 3 + 4 + 6 = 16.
–Reduzidos: se o número é superior à soma dos seus divisores exceto ele próprio; Por exemplo, 9: 1 + 3 = 4. Faça um algoritmo no qual em seu programa principal lê um valor inteiro que será o final do intervalo de busca que começa em 1.
Em procedimento específico que recebe parâmetro, imprima a lista de todos os inteiros neste intervalo, classificando-os em abundantes, reduzidos ou perfeitos. Apresente também seus divisores e somatória dos mesmos. Não utilize variável global. Exemplo: caso o usuário informe 15 como final de intervalo, seu programa deve apresentar exatamente o seguinte:
1:-- Soma:0 O numero 1 é reduzido!
2:-1-- Soma:1 O numero 2 é reduzido!
3:-1-- Soma:1 O numero 3 é reduzido! 4:-1-2-- Soma:3 O numero
4 é reduzido! 5:-1-- Soma:1 O numero
5 é reduzido! 6:-1-2-3-- Soma:6 O numero
6 é perfeito! …
12:-1-2-3-4-6-- Soma:16 O numero 12 é abundante! …
15:-1-3-5-- Soma:9 O numero 15 é reduzido!

-------------------------------------------------------------------
Boa noite Willian, segue em Bash Script.

#!/usr/bin/env bash

r=0;p=0;a=0;
linha=$(printf "%45s"|sed -r 's/ /-/g;s/-{15}/ & /g');
printf "\n${linha}\n** Testa Números: Reduzido, Perfeito e Abundante **\n${linha}\n\n"

read -p " INFORME um número: " NN;clear;

for ((n=1;n<=$NN;n++));do
unset div var E Soma stt;y=0;
for ((x=1;x<=$(($n/2));x++)){ (($n % $x == 0)) && div[$((y++))]="$x";};
var=${div[@]};E=${var// /+};Soma=$((${E}));
if (($n > $Soma));then stt="\e[1;33m Reduzido"; r=$(($r + 1));
elif (($n == $Soma));then stt="\e[1;32m Perfeito"; p=$(($p + 1));
elif (($n < $Soma));then stt="\e[1;34m Abundante"; a=$(($a + 1));
fi;
printf "%02d#${E:=0} = ${Soma}#$stt\e[0m\n" $n;
done
printf "\nRed.:[$r]#Perf.:[$p]#Abund.:[$a]\n";

Saída:
[code] INFORME um número: 25
01 0 = 0 Reduzido
02 1 = 1 Reduzido
03 1 = 1 Reduzido
04 1+2 = 3 Reduzido
05 1 = 1 Reduzido
06 1+2+3 = 6 Perfeito
07 1 = 1 Reduzido
08 1+2+4 = 7 Reduzido
09 1+3 = 4 Reduzido
10 1+2+5 = 8 Reduzido
11 1 = 1 Reduzido
12 1+2+3+4+6 = 16 Abundante
13 1 = 1 Reduzido
14 1+2+7 = 10 Reduzido
15 1+3+5 = 9 Reduzido
16 1+2+4+8 = 15 Reduzido
17 1 = 1 Reduzido
18 1+2+3+6+9 = 21 Abundante
19 1 = 1 Reduzido
20 1+2+4+5+10 = 22 Abundante
21 1+3+7 = 11 Reduzido
22 1+2+11 = 14 Reduzido
23 1 = 1 Reduzido
24 1+2+3+4+6+8+12 = 36 Abundante
25 1+5 = 6 Reduzido
---------------------------------------------------
Red.:[20] Perf.:[1] Abund.:[4]


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________