import random
import asyncio
import math
# 1. Função que processa um único número
async def calcular_fatoracao(n):
# Simula um pequeno delay para cada cálculo
await asyncio.sleep(1)
resultado = math.factorial(n)
print(f"Número: {n:<2} | Fatorial: {resultado}")
async def main():
# 2. Gerar e ORDENAR a lista (crescente)
numeros = [random.randint(1, 20) for _ in range(5)]
numeros.sort() # Coloca em ordem: 1, 2, 3...
print(f"Processando em ordem crescente: {numeros}\n")
# 3. Criar a lista de tarefas baseada na lista ordenada
tarefas = [calcular_fatoracao(n) for n in numeros]
# 4. Executar tudo simultaneamente
await asyncio.gather(*tarefas)
if __name__ == "__main__":
asyncio.run(main())