' FACTOREO DE
NUMEROS ENTEROS HASTA 10 CIFRAS -For Jorge Lorenzi *E-mail
jorgelectro@hotmail.com
'para ejecutar este
programa colocar en un formulario un <Textbox> , asi mismo en
<Herramientas
'Editor de menus >
poner:<Caption: Ingresar Número ; Name:ingresonumero >;
<Caption:FACTOREAR ;
'Name: factoreo>
;<Caption:SALIR ;Name: salgo> . Además pegar este código
Private Sub
factoreo_Click()
Dim FACT(200) As
Double, Exp(200) As Integer
On Error GoTo
errormensaje
' empezamos
reseteando los " acumuladores " poniéndolos en
condiciones
' de recibir los
resultados del factoreo del número ingresado para ello
Form1.Cls: For A = 1
To 200: Exp(A) = 0: FACT(A) = 0: Next A
N = 1
numero =
Val(Text1.Text)
If numero >
9999999999# Then
Text1.Text = "ojo
hasta 10 cifras"
GoTo errormensaje
End If
If numero <>
Text1.Text Then GoTo errormensaje2
' En el siguiente
<For/Next> se va incrementando el contenido de <divisor>
de a un entero
' por "loop"
a partir de <2> . Esos valores pueden ser números primos o nó
y entonces
' "divisor"
va a incluir sucesivamente a la familia de factores primos
existentes en el
' universo de los
números enteros. Por ello lo que sigue separa "la paja del
trigo" o sea
' se van guardando
en FACT(N) , sólamente los que sean factores primos del número
' a descomponer , y
además ..¡..ojo..! calcula cuantas veces divide exactamente a lo
' que va quedando
como cociente de dividir , con lo que determina su <exponente>
For divisor = 2 To
100000000
If divisor > 2
And divisor Mod 2 = 0 Then GoTo SIGUIENTE ') no se consideran los
valores que
If divisor > 3
And divisor Mod 3 = 0 Then GoTo SIGUIENTE ') contenga <divisor>
que sean
If divisor > 5
And divisor Mod 5 = 0 Then GoTo SIGUIENTE ') múltiplos de factores
primos
If divisor > 7
And divisor Mod 7 = 0 Then GoTo SIGUIENTE ') ya obtenidos en este
<For/Next>
If divisor > 7
And divisor > numero / 7 Then ')
FACT(N) =
numero: Exp(N) = 1: GoTo SALIR
End If
If divisor >
325777 And divisor > numero / 325777 Then
FACT(N) =
numero: Exp(N) = 1: GoTo SALIR
End If
FACT(N) = divisor
' entre "
VUELTA: " y " End if " se calcula a continuación
el exponente de cada factor
' primo obtenido
antes y acumulándolo en " EXP(N) "
VUELTA:
cociente = numero
/ divisor
If Int(cociente)
= cociente Then
numero = numero
/ divisor
Exp(N) = Exp(N)
+ 1
GoTo VUELTA
End If
' aquí ya tenemos
el factor primo y su exponente guardados en " FACT(N) " y
" EXP(N) "
' correspondiente
al presente "loop" de este " FOR/NEXT "
If numero <
divisor Then GoTo SALIR
If Exp(N) > 0
Then N = N + 1
SIGUIENTE:
Next divisor
'en este punto se
acabó la descomposición en factores primos y pasamos a mostrar
'en el formulario "
Form1 " el resultado final
SALIR:
Form1.ForeColor =
255
Form1.CurrentY =
700
Text1.Visible =
False
Print "resultado
del factoreo del número : "; Val(Text1.Text)
Form1.Print
For NN = 1 To 200
If Exp(NN) >
0 Then
Form1.Print
"Factor : "; FACT(NN);
Form1.CurrentX = 4000
Form1.Print
"Exponente : "; Exp(NN)
End If
Next NN
GoTo seguir
errormensaje:
MsgBox "Error:
INGRESAR NUMERO HASTA 10 CIFRAS SIN SIGNOS DE PUNTUACION"
Text1.Text = ""
Text1.Visible = True
GoTo seguir
errormensaje2:
MsgBox "Error:
ERROR HAS INGRESADO CARACTERES NO NUMERICOS"
Text1.Text = ""
Text1.Visible = True
' " seguir: "
significa que si queremos podemos solicitar el ingreso y fatoreo de
otro
' número entero , o
corregir un error al ingresarlo
seguir:
End Sub
Private Sub
Form_Load()
Text1.Visible =
False
With Text1
.BackColor =
&H80FFFF
.Left = 400
.Top = 200
.Height = 300
.Width = 3000
End With
End Sub
Private Sub
ingresonumero_Click()
Form1.Cls
Text1.Text = ""
Text1.Visible = True
End Sub
Private Sub
SALGO_Click()
End
End Sub
No hay comentarios:
Publicar un comentario