FoxPro/Visual FoxPro - Numeros primos

   
Vista:

Numeros primos

Publicado por Jhonnatti-k (22 intervenciones) el 23/09/2008 18:05:36
Hola............

La verad es que no eh podido hacer el codigo para encontar la cantidad de numero primos que hay entre 1 y X, donde x es el numero que ingrese el usuario.

esto es lo que hago, no se que esta mal, o si alguin tiene una sugerencia de como hacerlo, le agradeceria.

La verdad no entiendo muy bien como actua la funcion mod, si alguin me la exlica de paso mil gracias.

x= val(thisform.text1.Value)
x=ABS(x)

FOR j= 1 TO x

FOR i=2 to j-1
IF MOD(j,i)=0
*MESSAGEBOX("El numero "+ALLTRIM(STR(j))+"no es primo")
RETURN
ENDIF
ENDFOR
*MESSAGEBOX("El numero"+ALLTRIM(STR(x))+" es primo")
thisform.list1.AddItem (STR(j))

NEXT
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Numeros primos

Publicado por enrique (1041 intervenciones) el 24/09/2008 03:05:35
Clear
Numero = 0
@10,10 Say 'Introduzca el Rango desde 2 hasta Numero:' Get Numero
Read
for i = 2 to Numero
Primo = .T.
for x = 2 To i-1
modo = mod(i,x)
IF Modo = 0
Primo = .F.
Endif
next x
If Primo = .T.
? i
?? ' es primo'
Endif
next i
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros primos

Publicado por Jhonnatti-k (22 intervenciones) el 24/09/2008 17:14:01
Muchas gracias enrique.

Fue de gran ayuda tu codigo, No se si puediera abusar de tu confianza y me exolicaras como funciona el comando mod.

Muchas gracias de verdad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros primos

Publicado por enrique (1041 intervenciones) el 24/09/2008 23:39:04
MOD() devuelve el resto de una division entre dos expresiones, por ej

?MOD(10,3) mostrara 1

?MOD( (9*4) , (90/9) ) mostrara 6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros primos

Publicado por Jhonnatti-k (1041 intervenciones) el 25/09/2008 02:53:01
Hola enrique.

De verdad muchas gracias, por fin pude entender como funciona este comando y como resolver mi problema, Muchas gracias por tu colaboración.

Jhonnattan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros primos

Publicado por RODRIGO (1 intervención) el 24/04/2017 19:06:02
Amigo espero y veas esto por que veo que es del 2008 pero tengo una duda. y es como hacer para que de el resultado de la suma de todos esos números primos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros primos

Publicado por Fidel José (457 intervenciones) el 24/04/2017 23:05:48
No soy ese "amigo", pero fijate en esta función
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
PROCEDURE get_Primos
*------------------------------
LPARAMETERS tnInicial, tnFinal
* Encontrar los números primos entre tnInicial y tnFinal
* Devuelve un objeto con dos propiedades
* Cadena: (csv) lista de números primos encontrados
* Suma:		Suma de los números primos encontrados
* -------------------------------------------------------
* Visual FoxPro 9
* -------------------------------------------------------
* Ejemplo
* loObj = Get_Primos(2,40)
* ? loObj.suma
* ? loObj.Cadena
* loObj = null
* -------------------------------------------------------
LOCAL i,j,;
	lNro_primo,;
	loResponde as Object
 
loResponde = NEWOBJECT("Empty")
ADDPROPERTY(loResponde,"Cadena","")
ADDPROPERTY(loREsponde,"Suma",0)
 
tnInicial = ABS(EVL(m.tnInicial,2))
IF m.tnInicial < 2
	tnInicial = 2
ENDIF
tnFinal = ABS(EVL(m.tnFinal,100))
 
FOR i = m.tnInicial TO m.tnFinal
	lNro_Primo = .t.
	FOR j = 2 TO m.i - 1
		IF MOD(m.i,j)=0
			lNro_Primo = .f.
			EXIT
		ENDIF
	NEXT
	IF m.lNro_Primo
		loResponde.Suma = loResponde.Suma + m.i
		loResponde.Cadena = loResponde.Cadena ;
			+ IIF(!EMPTY(loResponde.Cadena),CHR(44),"");
			+ TRANSFORM(m.i)
	ENDIF
NEXT
 
RETURN loResponde
ENDPROC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar