Cómo obtener los números de prima o factores

Seleccione idioma Seleccione idioma
Id. de artículo: 202782 - Ver los productos a los que se aplica este artículo
Este artículo también se aplica a:
  • Microsoft Excel para Windows 95 7.0|7.0
  • Microsoft Excel para Windows 95 7.0a|7.0a
  • Microsoft Excel para Windows 5.0|5.0
  • Microsoft Excel para Windows 5.0c|5.0 c
  • Microsoft Excel para el 5.0|5.0 de Macintosh
  • Microsoft Excel para el 5.0a|5.0a de Macintosh
Expandir todo | Contraer todo

Resumen

Un número primo es cualquier entero puede dividirse uniformemente sólo por sí mismo y. Un factor de un número es un entero puede dividirse uniformemente en ese número. Este artículo contiene Microsoft Visual Basic para aplicaciones macros de Excel que puede utilizar para determinar todos los números primos dentro de un intervalo, o para derivar todos los factores de un número.

Más información

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. Para crear las macros, siga estos pasos:

  1. Guarde y cierre todos los libros abiertos y, después, cree un libro nuevo.
  2. Cree un nuevo módulo:

    En Microsoft Excel 97, iniciar el Editor de Visual Basic presionando ALT+F11 .

    En Microsoft Excel 5.0 o 7.0, haga clic en módulo de macros y en el menú Insertar .
  3. Escriba el código siguiente en el módulo:
       Sub GetFactors()
          Dim Count As Integer
          Dim NumToFactor As Single 'Integer limits to < 32768
          Dim Factor As Single
          Dim y As Single
          Dim IntCheck As Single
       
          Count = 0
          Do
             NumToFactor = _
                Application.InputBox(Prompt:="Type integer", Type:=1)
             'Force entry of integers greater than 0.
             IntCheck = NumToFactor - Int(NumToFactor)
             If NumToFactor = 0 Then
                Exit Sub
                'Cancel is 0 -- allow Cancel.
             ElseIf NumToFactor < 1 Then
                MsgBox "Please enter an integer greater than zero."
             ElseIf IntCheck > 0 Then
                MsgBox "Please enter an integer -- no decimals."
             End If
             'Loop until entry of integer greater than 0.
          Loop While NumToFactor <= 0 Or IntCheck > 0
          For y = 1 To NumToFactor
             'Put message in status bar indicating the integer being checked.
             Application.StatusBar = "Checking " & y
             Factor = NumToFactor Mod y
             'Determine if the result of division with Mod is without _
                 remainder and thus a "factor".
             If Factor = 0 Then
                'Enter the factor into a column starting with the active cell.
                ActiveCell.Offset(Count, 0).Value = y
                'Increase the amount to offset for next value.
                Count = Count + 1
             End If
          Next
          'Restore Status Bar.
          Application.StatusBar = "Ready"
       End Sub
       
       Sub GetPrime()
          Dim Count As Integer
          Dim BegNum As Single  'Integer limits to < 32768
          Dim EndNum As Single
          Dim Prime As Single
          Dim flag As Integer
          Dim IntCheck As Single
          Count = 0
       
          Do
             BegNum = _
                Application.InputBox(Prompt:="Type beginning number.", Type:=1)
             'Force entry of integers greater than 0.
             IntCheck = BegNum - Int(BegNum)
             If BegNum = 0 Then
                Exit Sub
                'Cancel is 0 -- allow Cancel.
             ElseIf BegNum < 1 Then
                MsgBox "Please enter an integer greater than zero."
             ElseIf IntCheck > 0 Then
                MsgBox "Please enter an integer -- no decimals."
             End If
             'Loop until entry of integer greater than 0.
          Loop While BegNum <= 0 Or IntCheck > 0
       
          Do
             EndNum = _
                Application.InputBox(Prompt:="Type ending number.", Type:=1)
             'Force entry of integers greater than 0.
             IntCheck = EndNum - Int(EndNum)
             If EndNum = 0 Then
                Exit Sub
                'Cancel is 0 -- allow Cancel.
             ElseIf EndNum < BegNum Then
                MsgBox "Please enter an integer larger than " & BegNum
             ElseIf EndNum < 1 Then
                MsgBox "Please enter an integer greater than zero."
             ElseIf IntCheck > 0 Then
                MsgBox "Please enter an integer -- no decimals."
             End If
             'Loop until entry of integer greater than 0.
          Loop While EndNum < BegNum Or EndNum <= 0 Or IntCheck > 0
       
          For y = BegNum To EndNum
             flag = 0
             z = 1
             Do Until flag = 1 Or z = y + 1
                'Put message into Status Bar indicating the integer and _
                    divisor in each loop.
                Application.StatusBar = y & " / " & z
                Prime = y Mod z
                If Prime = 0 And z <> y And z <> 1 Then
                   flag = 1
                End If
                z = z + 1
             Loop
       
             If flag = 0 Then
                'Enter the factor into a column starting with the active cell.
                ActiveCell.Offset(Count, 0).Value = y
                'Increase the amount to offset for next value.
                Count = Count + 1
             End If
          Next y
          'Restore Status Bar.
          Application.StatusBar = "Ready"
       End Sub
    					
  4. En el menú archivo , haga clic en Cerrar y volver a Microsoft Excel . Cambie a la hoja de cálculo en el que desea ejecutar la macro y haga clic en una celda en la que desee crear la columna de números primos o de factores.
  5. En el menú Herramientas , elija macro y, a continuación, haga clic en macros .
  6. Haga clic en GetFactors y, a continuación, haga clic en Ejecutar para obtener los factores.

    -o bien -

    Haga clic en GetPrime y, a continuación, haga clic en Ejecutar para obtener la lista de números primos.
Nota : aunque estas macros pueden encontrar números primos para un gran intervalo de números y factores para números grandes, ejecuta dicho código puede tardar mucho. Por este motivo, la barra de estado muestra el progreso mientras se ejecuta la macro.

Referencias

Para obtener más información acerca de cómo obtener ayuda con Visual Basic para aplicaciones, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
163435VBA: Recursos de programación para Visual Basic para aplicaciones
226118OFF2000: Recursos de programación para Visual Basic para aplicaciones
Para obtener más información acerca de cómo ejecutar código de ejemplo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
173707OFF97: Cómo ejecutar código de ejemplo de artículos de Knowledge Base
212536OFF2000: Cómo ejecutar código de ejemplo de artículos de Knowledge Base

Propiedades

Id. de artículo: 202782 - Última revisión: martes, 10 de octubre de 2006 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft Excel 97 Standard Edition
Palabras clave: 
kbmt kbhowto KB202782 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 202782
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com