GatoBooster

ma 28/sept - resolución certamen M1

Sep 28th, 2021
547
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ------------------------------------------------------------------------------------------------------------------------------------
  2. '''
  3. NÚMEROS ALEGRES
  4.  
  5. Considere que un número natural se denomina ALEGRE si la SUMA de sus factores propios da como resultado el mismo número.
  6. Recuerde que, los divisores propios de un número no incluyen al número como divisor de si mismo.
  7.  
  8. Así por ejemplo, 6 es alegre ya que sus divisores propios son 1, 2 y 3, cuya suma es 6.
  9.  
  10. Escriba un programa PYTHON que permita determinar si deferentes números enteros son o no ALEGRES. La entrada de datos debe finalizar al leer un 0, el cual no debe ser procesado, y sólo se deben procesar números positivos.
  11.  
  12. La salida del programa considera escribir cada número procesado y si el número es alegre el mensaje "ES  ALEGRE" y en caso contrario el mensaje "NO ES  ALEGRE", tal como se muestra en los ejemplos.
  13.  
  14. Al finalizar el procesamiento se escribe un resumen: la cantidad de números que sí es alegre, la cantidad que no lo son y los respectivos porcentajes (redondeado al entero), tal como se muestra en los ejemplos.
  15.  
  16. Si no hubiera datos a analizar se escribe el mensaje "NO hubo números mayores a cero".
  17.  
  18. IMPORTANTE : para resolver este problema debe utilizar los contenidos vistos en el módulo (no puede utilizar listas, tuplas, conjuntos, diccionarios o cadenas)
  19. '''
  20. ------------------------------------------------------------------------------------------------------------------------------------
  21. totalAlegres = 0
  22.  
  23. totalNoAlegres = 0
  24.  
  25.  
  26.  
  27. while True :
  28.  
  29.     numeroN = int(input())
  30.  
  31.     if numeroN == 0 :
  32.  
  33.         break
  34.  
  35.     if numeroN < 0 :
  36.  
  37.         continue
  38.  
  39.     sumaDivisores = 0
  40.  
  41.     for num in range (1,numeroN) :
  42.  
  43.         if numeroN % num == 0 :
  44.  
  45.             sumaDivisores = sumaDivisores + num
  46.  
  47.     if numeroN == sumaDivisores :
  48.  
  49.         print(numeroN,"ES ALEGRE")
  50.  
  51.         totalAlegres = totalAlegres + 1
  52.  
  53.     else :
  54.  
  55.         print(numeroN,"NO ES ALEGRE")
  56.  
  57.         totalNoAlegres = totalNoAlegres + 1
  58.  
  59.  
  60.  
  61. total = totalAlegres + totalNoAlegres
  62.  
  63. if total == 0 :
  64.  
  65.     print("NO hubo números mayores a cero")
  66.  
  67. else :
  68.  
  69.     porcSI = (totalAlegres/total) * 100
  70.  
  71.     porcNO = (totalNoAlegres/total) * 100
  72.  
  73.     print()
  74.  
  75.     print("RESUMEN")
  76.  
  77.     print("*******")
  78.  
  79.     print("total de números procesados =",total)
  80.  
  81.     print("ALEGRES")
  82.  
  83.     print("     total      =",totalAlegres)
  84.  
  85.     print("     porcentaje =",round(porcSI),"%")
  86.  
  87.     print("NO ALEGRES")
  88.  
  89.     print("     total      =",totalNoAlegres)
  90.  
  91.     print("     porcentaje =",round(porcNO),"%")  
RAW Paste Data