<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: El Proyecto Euler: Problema 1</title>
	<atom:link href="http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1</link>
	<description>Sobre desarrollo de software y ñoñadas</description>
	<lastBuildDate>Sat, 11 Feb 2012 02:01:28 +0300</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: fitorec</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-72769</link>
		<dc:creator>fitorec</dc:creator>
		<pubDate>Sun, 16 May 2010 18:12:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-72769</guid>
		<description>Bueno creo que este problema ya quedo solucionado, una forma de mejorar la solución tal ves sea replanteando lo que se tiene:

Problema principal es:

Encuentra la suma de todos los múltiplos de 3 o 5 debajo de 1000.

Observaciones la solución de Xiam: q por cierto se me hace muy buena, pues el tiempo de ejecución(Cota superior/inferior) es costante.

Sea X la suma de los elementos múltiplos de A en un rango de N entonces esto es:

X = (A+2A+..+N) = A(1+2+...+N/A)
Donde (1+2+...+N/A) Se puede ver como la sucesión 1+2+3+..n = n(n+1)/2   esto es:

1+2+...+N/A = N/A* (N/A + 1) /2  por lo tanto:

X = A(N/A* (N/A + 1) /2 ) = N (N/A + 1) /2 

Dado el enunciado nos conviene hacer N=999 entonces para el caso de la suma de los elementos de 3 (A=3) son:
N (N/A + 1) /2 
Si hacemos B=5 entonces la suma de los elementos de la susesion (5+10+...+995) es.
N ([[N/B]] + 1) /2 

Donde como bien lo dice Xiam [[]] debería ser la parte entere de la razón N/B.
Entonces la solución al problema planteado seria:
N ([[N/A]] + 1) /2  + N ([[N/B]] + 1) /2 = N/2 * ([[N/A]] + [[N/B]]  + 2)

Respecto al &#039;o&#039; es excluyente, esto es:
La suma de los elementos 3 o 5 en el rango de [1-999] menos los elementos repetidos(sus multiplos) esto es si hacemos C=15:

N/2 * ([[N/A]] + [[N/B]]  + 2) - N ([[N/C]] + 1) /2  = N/2 * ([[N/A]] + [[N/B]]  - [[N/C]] +1)

La otra solución la basada en iteraciones la observación del Michoacano es acertada en el hecho que si se realiza la suma de 3 en 3 y de 5 en 5, se reducen las iteraciones.

Si analizamos un intervalo menor a 20.
En el caso en el cual la &#039;o&#039; no es excluyente la para la suma de los valores serian:
3 + 6 + 9 + 12 + 15 + 18 (los de 3) + 5 + 10 + 15 (los de 5) = 93
Para el otro caso en donde la o es excluyente esto seria:
3 + 6 + 9 + 12 + 15 + 18 (los de 3) + 5 + 10  (los de 5 dnd excluimos el 15)  = 78

Entonces la cuestión se reduce a sumar los múltiplos de 3 y 5 en el intervalo deseado y posteriormente restarlo los elementos que son múltiplos de ambos esto en C seria:

&lt;pre lang=&quot;c&quot; line=&quot;1&quot;&gt;
#include 
#define TOP 1000
int main(void){
        int i,j,k,suma = 0;
        //la suma de los elementos multiplos de 3
        for(i=0; i&lt;TOP; i+=3)
                suma +=i;
        //la suma de los elementos multiplos de 5
        for(j=0; j&lt;TOP; j+=5)
                suma +=j;
        //la resta de los elementos multiplos de 3 y 5
        for(k=0; k&lt;TOP; k+=15)
                suma -=k;
        printf(&quot;%d\n&quot;,suma);
        return 0;
}
&lt;/pre&gt;

Esta implementación al comparar el rendimiento con el programa &#039;time&#039; mostro un cambio significativo, sin embargo el tiempo de ejecución esta en función de la constante TOP a diferencia de la solución basada en las sucesiones de Xiam.

Respecto al &#039;o&#039; exclusivo bastara con eliminar las lineas 12,13,14 para incluir los múltiplos de 3, 5 lo cual tmb reduce el tiempo de ejecución del programa resultante.

&lt;pre lang=&quot;c&quot; line=&quot;1&quot;&gt;
        //la resta de los elementos multiplos de 3 y 5
        for(k=0; k&lt;TOP; k+=15)
                suma -=k;
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Bueno creo que este problema ya quedo solucionado, una forma de mejorar la solución tal ves sea replanteando lo que se tiene:</p>
<p>Problema principal es:</p>
<p>Encuentra la suma de todos los múltiplos de 3 o 5 debajo de 1000.</p>
<p>Observaciones la solución de Xiam: q por cierto se me hace muy buena, pues el tiempo de ejecución(Cota superior/inferior) es costante.</p>
<p>Sea X la suma de los elementos múltiplos de A en un rango de N entonces esto es:</p>
<p>X = (A+2A+..+N) = A(1+2+&#8230;+N/A)<br />
Donde (1+2+&#8230;+N/A) Se puede ver como la sucesión 1+2+3+..n = n(n+1)/2   esto es:</p>
<p>1+2+&#8230;+N/A = N/A* (N/A + 1) /2  por lo tanto:</p>
<p>X = A(N/A* (N/A + 1) /2 ) = N (N/A + 1) /2 </p>
<p>Dado el enunciado nos conviene hacer N=999 entonces para el caso de la suma de los elementos de 3 (A=3) son:<br />
N (N/A + 1) /2<br />
Si hacemos B=5 entonces la suma de los elementos de la susesion (5+10+&#8230;+995) es.<br />
N ([[N/B]] + 1) /2 </p>
<p>Donde como bien lo dice Xiam [[]] debería ser la parte entere de la razón N/B.<br />
Entonces la solución al problema planteado seria:<br />
N ([[N/A]] + 1) /2  + N ([[N/B]] + 1) /2 = N/2 * ([[N/A]] + [[N/B]]  + 2)</p>
<p>Respecto al &#8216;o&#8217; es excluyente, esto es:<br />
La suma de los elementos 3 o 5 en el rango de [1-999] menos los elementos repetidos(sus multiplos) esto es si hacemos C=15:</p>
<p>N/2 * ([[N/A]] + [[N/B]]  + 2) &#8211; N ([[N/C]] + 1) /2  = N/2 * ([[N/A]] + [[N/B]]  &#8211; [[N/C]] +1)</p>
<p>La otra solución la basada en iteraciones la observación del Michoacano es acertada en el hecho que si se realiza la suma de 3 en 3 y de 5 en 5, se reducen las iteraciones.</p>
<p>Si analizamos un intervalo menor a 20.<br />
En el caso en el cual la &#8216;o&#8217; no es excluyente la para la suma de los valores serian:<br />
3 + 6 + 9 + 12 + 15 + 18 (los de 3) + 5 + 10 + 15 (los de 5) = 93<br />
Para el otro caso en donde la o es excluyente esto seria:<br />
3 + 6 + 9 + 12 + 15 + 18 (los de 3) + 5 + 10  (los de 5 dnd excluimos el 15)  = 78</p>
<p>Entonces la cuestión se reduce a sumar los múltiplos de 3 y 5 en el intervalo deseado y posteriormente restarlo los elementos que son múltiplos de ambos esto en C seria:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="c"><span style="color: #339933;">#include </span>
<span style="color: #339933;">#define TOP 1000</span>
<span style="color: #993333;">int</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #993333;">void</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #993333;">int</span> i,j,k,suma <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>;
        <span style="color: #808080; font-style: italic;">//la suma de los elementos multiplos de 3</span>
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>; i&lt;TOP; i<span style="color: #66cc66;">+=</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>
                suma <span style="color: #66cc66;">+=</span>i;
        <span style="color: #808080; font-style: italic;">//la suma de los elementos multiplos de 5</span>
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>; j&lt;TOP; j<span style="color: #66cc66;">+=</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>
                suma <span style="color: #66cc66;">+=</span>j;
        <span style="color: #808080; font-style: italic;">//la resta de los elementos multiplos de 3 y 5</span>
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>k<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>; k&lt;TOP; k<span style="color: #66cc66;">+=</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span>
                suma <span style="color: #66cc66;">-=</span>k;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,suma<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>Esta implementación al comparar el rendimiento con el programa &#8216;time&#8217; mostro un cambio significativo, sin embargo el tiempo de ejecución esta en función de la constante TOP a diferencia de la solución basada en las sucesiones de Xiam.</p>
<p>Respecto al &#8216;o&#8217; exclusivo bastara con eliminar las lineas 12,13,14 para incluir los múltiplos de 3, 5 lo cual tmb reduce el tiempo de ejecución del programa resultante.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="c">        <span style="color: #808080; font-style: italic;">//la resta de los elementos multiplos de 3 y 5</span>
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>k<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>; k&lt;TOP; k<span style="color: #66cc66;">+=</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span>
                suma <span style="color: #66cc66;">-=</span>k;</pre></td></tr></table></div>

]]></content:encoded>
	</item>
	<item>
		<title>Por: ramiro</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-49777</link>
		<dc:creator>ramiro</dc:creator>
		<pubDate>Tue, 30 Jun 2009 17:32:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-49777</guid>
		<description>mandenme los resultados que les salio de los problemas 11,21,34
por favor quiero comprovar mis resultados..</description>
		<content:encoded><![CDATA[<p>mandenme los resultados que les salio de los problemas 11,21,34<br />
por favor quiero comprovar mis resultados..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Victor Braco</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-45238</link>
		<dc:creator>Victor Braco</dc:creator>
		<pubDate>Thu, 19 Feb 2009 16:10:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-45238</guid>
		<description>Si bien creo que las progresiones aritmeticas esas son geniales, para varias un poco las &quot;formas&quot; de calcularlo, aca tengo otra:
http://www.vbracco.com.ar/archivo/2009/02/19/proyecto-euler-problema-1/</description>
		<content:encoded><![CDATA[<p>Si bien creo que las progresiones aritmeticas esas son geniales, para varias un poco las &#8220;formas&#8221; de calcularlo, aca tengo otra:<br />
<a href="http://www.vbracco.com.ar/archivo/2009/02/19/proyecto-euler-problema-1/" rel="nofollow">http://www.vbracco.com.ar/archivo/2009/02/19/proyecto-euler-problema-1/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: pablasso</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43688</link>
		<dc:creator>pablasso</dc:creator>
		<pubDate>Sun, 15 Jun 2008 12:21:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43688</guid>
		<description>Gracias Geranio!</description>
		<content:encoded><![CDATA[<p>Gracias Geranio!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Geranio Bigotes</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43675</link>
		<dc:creator>Geranio Bigotes</dc:creator>
		<pubDate>Fri, 13 Jun 2008 23:21:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43675</guid>
		<description>Otra respuesta al problema en python, usando comprensión de listas, espero que les resulte interesante tb.


&lt;pre lang=&quot;python&quot;&gt;sum([n for n in range(1,1000) if n % 3 == 0 or n % 5 == 0])&lt;/pre&gt;


Eso es todo :P, bien cortito... Saludos!</description>
		<content:encoded><![CDATA[<p>Otra respuesta al problema en python, usando comprensión de listas, espero que les resulte interesante tb.</p>

<div class="wp_syntax"><div class="code"><pre class="python"><span style="color: #008000;">sum</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>n <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">1000</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">if</span> n <span style="color: #66cc66;">%</span> <span style="color: #ff4500;">3</span> == <span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">or</span> n <span style="color: #66cc66;">%</span> <span style="color: #ff4500;">5</span> == <span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Eso es todo :P, bien cortito&#8230; Saludos!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: pablasso</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43577</link>
		<dc:creator>pablasso</dc:creator>
		<pubDate>Wed, 21 May 2008 22:36:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43577</guid>
		<description>Es C no C++.

No hay necesidad de ponerse como anónimo, precisamente esa es una de las motivaciones, desde clases en el TSU (unos 6 años) que no toco C y ese es uno de los propósitos, que se me quite lo wey. No me ofendo shinga :-)</description>
		<content:encoded><![CDATA[<p>Es C no C++.</p>
<p>No hay necesidad de ponerse como anónimo, precisamente esa es una de las motivaciones, desde clases en el TSU (unos 6 años) que no toco C y ese es uno de los propósitos, que se me quite lo wey. No me ofendo shinga :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: RalPh</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43576</link>
		<dc:creator>RalPh</dc:creator>
		<pubDate>Wed, 21 May 2008 22:24:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43576</guid>
		<description>jajaja, acaso apenas vas empesando con C++?
Eso es de rutina prima semanal</description>
		<content:encoded><![CDATA[<p>jajaja, acaso apenas vas empesando con C++?<br />
Eso es de rutina prima semanal</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: pablasso</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43574</link>
		<dc:creator>pablasso</dc:creator>
		<pubDate>Wed, 21 May 2008 22:04:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43574</guid>
		<description>@Michoacano Tienes mucha razón, se itera mucho menos haciéndolo por partes y en rangos grandes si que valdrá la pena. A la próxima no te guardes la formula, en los concursos todo se vale mientras llegues al resultado ;-)

@dmind Gracias! siempre es interesante verlo en otros lenguajes

@xiam Me gusto mucho tu forma de resolver el problema y mucho mas tu forma de explicarlo, gracias por tomarte el tiempo

@Yeru Fáciles y difíciles, ahí vamos de uno en uno :-)

@Jesús .. Webón ¬¬</description>
		<content:encoded><![CDATA[<p>@Michoacano Tienes mucha razón, se itera mucho menos haciéndolo por partes y en rangos grandes si que valdrá la pena. A la próxima no te guardes la formula, en los concursos todo se vale mientras llegues al resultado ;-)</p>
<p>@dmind Gracias! siempre es interesante verlo en otros lenguajes</p>
<p>@xiam Me gusto mucho tu forma de resolver el problema y mucho mas tu forma de explicarlo, gracias por tomarte el tiempo</p>
<p>@Yeru Fáciles y difíciles, ahí vamos de uno en uno :-)</p>
<p>@Jesús .. Webón ¬¬</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Jesús</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43571</link>
		<dc:creator>Jesús</dc:creator>
		<pubDate>Wed, 21 May 2008 16:15:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43571</guid>
		<description>mira tú, que interesante, me pondré a resolverlos... pero este ya no vale porque ya lo resolviste así que mejor lo copypasteo ñ_ñ</description>
		<content:encoded><![CDATA[<p>mira tú, que interesante, me pondré a resolverlos&#8230; pero este ya no vale porque ya lo resolviste así que mejor lo copypasteo ñ_ñ</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Yeru</title>
		<link>http://www.pablasso.com/2008/05/18/el-proyecto-euler-problema-1#comment-43559</link>
		<dc:creator>Yeru</dc:creator>
		<pubDate>Mon, 19 May 2008 16:37:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=447#comment-43559</guid>
		<description>@_@  No sabia de este proyecto Euler... La verdad que no, se ve bien interesante.. seguire viendo los problemas que publiques, notese que dije viendo y no resolviendo jajaja... Saludos. 
*a Yeru le da flojera programar asuntos matematicos por mas simple que sean...

A ver a ver.. Cual es el otro problema que resolveras? Este estaba un poco facil... :)</description>
		<content:encoded><![CDATA[<p>@_@  No sabia de este proyecto Euler&#8230; La verdad que no, se ve bien interesante.. seguire viendo los problemas que publiques, notese que dije viendo y no resolviendo jajaja&#8230; Saludos.<br />
*a Yeru le da flojera programar asuntos matematicos por mas simple que sean&#8230;</p>
<p>A ver a ver.. Cual es el otro problema que resolveras? Este estaba un poco facil&#8230; :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

