Recuerdo haber visto un enlace en Google pero ahora no lo encuentro, ¿alguien lo conoce? Gracias, un saludo.
te prometo seras el alma de la fiesta..
2,4,6,12,20,30
se puede expresar como n+n²
tu algoritmo queda como
a = pedir primer numero
b = pedir segundo numero
(compruba que estos son pares si quieres?)
respuesta = (a+a²) - (b+b²)
lo mejor es que al no tener ciclos la computadora no tarda ni una milesima en calcularlo ;)
ahora si, programa tu el JS :3
teoria: funciones generadoras; toda serie puede expresarse con una funcion
Me temo que no lo entiendo... ¿el intervalo (307,520) por ejemplo se puede expresar como n + n2? :huh:
Gracias por tu ayuda, un saludo.
el 307 no es par..
pero se puede expressar ese calculo como:
308/2 = 154 # esta es la posicion del 308 en la serie del (2,4,6,12,20,30....)
520/2 = 260
formula: (154+154²) - (260+260²)
esto es igual a sumar los numeros pares entre el 307 y el 520
Cita de: Kase en 21 Junio 2013, 03:38 AM
el 307 no es par..
Yo no digo que lo sea, simplemente estipulo un intervalo. Igual que cuando se plantea "encuentra los múltiplos de 7 entre 10 y 20" no estamos diciendo que ni 10 ni 20 sean múltiplos de 7 :)
Cita de: Kase en 21 Junio 2013, 03:38 AM
formula: (154+154²) - (260+260²)
esto es igual a sumar los numeros pares entre el 307 y el 520
Imposible, puesto que la primera cantidad es menor que la segunda, de modo que obtendremos un número entero
negativo.
Imagino que será en todo caso (260 +260
2) - (154+154
2)
Aparte, ¿esa fórmula debo pasarla al programa? ¿No habría que basarse en el módulo, buscando los números divisibles por 2 para almacenarlos y sumarlos?
Gracias por tu ayuda, un saludo.
Kase: si calculo bien
Citara = pedir primer numero
b = pedir segundo numero
(compruba que estos son pares si quieres?)
respuesta = (a+a²) - (b+b²)
no se de donde sacaste la teoria loca... pero tienes +1 por pensar el camino del calculo antes del for...
pero veamos:
pares entre 2 y 20
(2+4)-(20+400)= 6-420 = 414 (asumo que siempre será positivo)
pero el resultado es incorrecto... debe ser 110
una mas simple... suma de pares entre 100 y 104
(100+10000)-(104+10816)=10100-10920=820
pero 100+102=202, 202+104=306
la respuesta quedó fue lejos!
luego cambiaste tu teoria por no ser los numeros sino sus "posiciones"
Citarpero se puede expressar ese calculo como:
308/2 = 154 # esta es la posicion del 308 en la serie del (2,4,6,12,20,30....)
520/2 = 260
los mismos 2 intervalos
2,20 -> 1 y 10 -> (1 + 1²)-(10 + 10²)-> 2 - 110 -> 108 uff! cerca... pero no
(me da lala calcular el segundo, demostré mi punto)
la formula debería ser =
(p + u) * c /2
donde
p = primero
u = ultimo
c = cantidad de pares
y c puedes calcularlo como
c = ((u - p)/2)+1
quedando al final
(p + u) * (((u - p)/2)+1) /2
y probando con los 2 mismos intervalos
2,20
(2 + 20) * (((20-2)/2)+1) /2
(22) * (10) /2
220/2
110
y el otro
100,104
(100 + 104) * (((104-100)/2)+1) /2
(204) * (3) /2
612/2
306
CitarAparte, ¿esa fórmula debo pasarla al programa? ¿No habría que basarse en el módulo, buscando los números divisibles por 2 para almacenarlos y sumarlos?
supongo que es una tarea de la uni y tu profesor no estará muy agradecido que si está explicando ciclos llegues con formulas XD
así que mi solucion es la siguiente...
captura 2 variables, las llamaré P y U
y 2 variables internas
Resultado = 0
Conteo = 0
si P%2 != 0 entonces P++
si U%2 != 0 entonces U--
y P siempre debe ser menor que U
para (I = P, I<=U, I=I+2)
resultado = resultado + I
esas lineas deberían mas que hacer todo el trabajo XD
lo que está haciendo es que usa las variables del ciclo de una vez para sumar... por eso el ciclo salta de 2 en 2...
CitarImposible, puesto que la primera cantidad es menor que la segunda, de modo que obtendremos un número entero negativo.
Imagino que será en todo caso (260 +2602) - (154+1542)
Aparte, ¿esa fórmula debo pasarla al programa?
Gracias por tu ayuda, un saludo.
perdon.. si es la funcion como tu dices.. XD
un programa quedaria como
function sumar_intervalo(a,b){
return (b/2+math.pow(b/2,2) -(a/2+math.pow(a/2,2) )
}
el como le pases los parametros es tu problema :P
Citar¿No habría que basarse en el módulo, buscando los números divisibles por 2 para almacenarlos y sumarlos?
claro. puedes hacerlo comose te de la gana...
pero como yo te digo le causaras un braindexplode a tu profesor ;)
(http://marcianosmx.com/wp-content/uploads/2012/10/2373292-brain_explode_super.jpg)
mi forma de solucionarlo esta sustentado bajo la teoria de funciones generadoras
http://es.wikipedia.org/wiki/Funci%C3%B3n_generadora (http://es.wikipedia.org/wiki/Funci%C3%B3n_generadora)
prueba en python
def intervalo(a,b):
return (b/2+((b/2)**2)) - (a/2+((a/2)**2))
>>> intervalo(0,6)
12
>>> intervalo(0,2)
2
>>> intervalo(0,4)
6
>>> intervalo(0,10)
30
>>> intervalo(0,30)
240
>>> intervalo(0,4596)
5283102
>>> intervalo(0,459640)
52817462220
nota, en python 0/2 es 0... no se si en otros lenguajes la maquina explote...
por que le das tantas vueltas? funciona? usalo :D
Cita de: engelx en 21 Junio 2013, 10:05 AM
supongo que es una tarea de la uni y tu profesor no estará muy agradecido que si está explicando ciclos llegues con formulas XD
Ni estoy en la uni, ni (por desgracia) tengo profesor, ni sé qué son ciclos. Simplemente trato de estudiar javascript por mi cuenta :P
Intentaré descifrar lo que me explicas (estoy pegado en Matemáticas), muchas gracias :)
y kase solo ignoró mi comentario y listo? XD
ahora has tu calculo con números iniciales diferentes de 0 y mira como falla
solo intenta entre 2 y 4 XD te dará 4
Citarpero como yo te digo le causaras un braindexplode a tu profesor
en mi uni, solo te dirian,
1- explique y desmuestre su calculo como verdadero
2- explique como está relacionado eso con el tema de ciclos
y en ese caso simplemente tu cerebro no explotaria sino que diria "nothing to do here" XD
Cita de: Kase en 21 Junio 2013, 10:08 AM
function sumar_intervalo(a,b){
return (b/2+math.pow(b/2,2) -(a/2+math.pow(a/2,2) )
}
¡Muchas gracias! Pero ni idea de qué es math.pow :P Qué lío tengo con la carretilla de manuales que me he descargado.
Cita de: Kase en 21 Junio 2013, 10:08 AM
pero como yo te digo le causaras un braindexplode a tu profesor ;)
Es que no tengo ningún profesor. Sólo quiero (porque lo necesito) aprender javascript, y sólo javascript.
Cita de: Kase en 21 Junio 2013, 10:08 AM
prueba en python
Uf ni idea, bastante lío tengo con javascript :P
Cita de: Kase en 21 Junio 2013, 10:08 AM
por que le das tantas vueltas? funciona? usalo :D
:huh: No le doy vueltas, simplemente no sé hacer programas.
Muchas gracias, un saludo.
Cita de: engelx en 21 Junio 2013, 10:21 AM
y kase solo ignoró mi comentario y listo? XD
ahora has tu calculo con números iniciales diferentes de 0 y mira como falla
solo intenta entre 2 y 4 XD te dará 4
>>> intervalo(1,4)
6
>>> intervalo(3,8)
18
>>> intervalo(1,20)
110
>>> intervalo(99,104)
306
no falla.. solo que si le pides del 2 a 10 empieza a sumar apartir del 4.. xD
def intervalo(a,b):
return (b/2+((b/2)**2)) - ((a-1)/2)+((a-1)/2)**2) ##con parentesis por que me confundo..
pero si. tu formula esta mas nice.. se feliz xD
ash, bueno con ciclos ¬¬
function intervalo (a,b){
variable =0
for (var i=a;i<=b;i++)
{
if (i%2==0){
variable = variable +i
}
}
}
en python
def i(a,b):
var=0
for x in range(a,b+1):
if x%2 ==0:
var+=x
return var
>>> i(2,4)
6
>>> i(2,8)
20
>>> i(10,20)
90
cual es tu necesidad de aprender con javascript? lo necesitas a corto plazo? si estas aprendiendo a programar por ocio te recomiento python, ruby, perl
CitarEs que no tengo ningún profesor. Sólo quiero (porque lo necesito) aprender javascript, y sólo javascript.
con javascript sufriras por tener que usar el navegador. ya cuando entiendas ciclos, sentencias, etc.. regresas a javascript
Cita de: Kase en 21 Junio 2013, 10:27 AM
ash, bueno con ciclos ¬¬
function intervalo (a,b){
variable =0
for (var i=a;i<=b;i++)
{
if (i%2==0){
variable = variable +i
}
}
}
Eeeeh que no lo había visto, muchas gracias :)
Cita de: Kase en 21 Junio 2013, 10:27 AM
...cual es tu necesidad de aprender con javascript? lo necesitas a corto plazo? si estas aprendiendo a programar por ocio te recomiento python, ruby, perl
con javascript sufriras por tener que usar el navegador. ya cuando entiendas ciclos, sentencias, etc.. regresas a javascript
Soy fotógrafo y quiero también hacer diseños webs, me manejo con CSS pero por todas partes leo que además hay que saber javascript (incluso teniendo CSS3).
Empecé con Python pero lo dejé enseguida porque no me era útil, sólo tengo tiempo para lo que necesito en mi trabajo.
Muchas gracias por tu ayuda, un saludote.