Ayuda con ejercicio de visual basic

Un número perfecto es aquel en que la suma de los divisores da el mismo número. Averiguar los números perfectos que hay entre A y B. Ejemplo:
6 = 1 + 2 + 3

Respuesta
1

Este ejercicio se puede hacer bien pero costaría bastante programarlo. Habría que descomponer cada número en factores primos y a través de ellos dar con los divisores, pero como te digo cuesta mucho. Vamos a encontrár los divisores probando uno por uno pero con un poco de matemáticas. Sabemos que los divisores van por pares, por ejemplo los de 24 son

1 y 24

2 y 12

3 y 8

4 y 6

Y esto nos dice que solo debemos calcular divisores hasta la raíz cuadrada, ya que uno es menor y otro mayor. Para los cuadrados perfectos habrá que tener cuidado ya que no hay pareja

16 tiene divisores

1 y 16

2 y 8

4

Además no meteremos el número entre sus divisores, luego con el 1 no pondremos su pareja.

Los límites por ejemplo se leerán de las celdas A1 y A2, los números perfectos los escribiré en la columna C

Defint A, B, i, j, suma, fila as Integer
A = cells(1,1)
B = cells(2,1)
fila = 1
For i = A to B
   Suma=1
   For j = 2 to sqrt(i)
       if i mod j = 0 then
          suma = suma + j
          If j^2 <> iTthen suma = suma + i/j
       End If
   Next
   If suma = i Then
      cells(fila,3) = i
      fila = fila + 1
   End If
Next

Y no puedo probarlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas