<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-626187215596311778</id><updated>2011-04-21T21:14:38.695+02:00</updated><category term='C#'/><category term='Factorials'/><category term='Pascal&apos;s Triangle'/><category term='Figurate Numbers'/><category term='Spirals'/><category term='Palindromes'/><category term='Continued Fractions'/><category term='Combinations'/><category term='Pythagorean Triples'/><category term='Farey Sequence'/><category term='Totient'/><category term='Project Euler'/><category term='Partitions'/><category term='Primes'/><category term='Amicable Numbers'/><category term='BigInt'/><category term='Sieve of Eratosthenes'/><category term='Matrix'/><category term='Prime Factors'/><title type='text'>Project Euler in C#</title><subtitle type='html'>I live and breathe C# these days so that's what I'll be discussing here</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-557078045624605898</id><published>2009-04-30T14:12:00.002+02:00</published><updated>2009-04-30T14:16:33.824+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #79</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=79"&gt;Link to Project Euler problem 79&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A common security method used for online banking is to ask the user for three random characters from a passcode. For example, if the passcode was 531278, they may asked for the 2nd, 3rd, and 5th characters; the expected reply would be: 317.&lt;br /&gt;The text file, &lt;/span&gt;&lt;a href="http://projecteuler.net/project/keylog.txt"&gt;&lt;span style="font-family:verdana;"&gt;keylog.txt&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;, contains fifty successful login attempts.&lt;br /&gt;Given that the three characters are always asked for in order, analyse the file so as to determine the shortest possible secret passcode of unknown length.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#009900;"&gt;Did this by hand but then I felt like I had to come up with a coded solution too.&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 79&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            var sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../keylog.txt"&lt;/span&gt;);&lt;br /&gt;            var keys = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (!sr.EndOfStream)keys.Add(sr.ReadLine());&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; keys.Count - 1; i++)&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i + 1; j &amp;lt; keys.Count; j++)&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (keys[i] == keys[j])&lt;br /&gt;                        keys.Remove(keys[j]);&lt;br /&gt;            var cList = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; keys)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = s.ToCharArray();&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c1 &lt;span class="kwrd"&gt;in&lt;/span&gt; c)&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!cList.Contains(c1))&lt;br /&gt;                        cList.Add(c1);&lt;br /&gt;            }&lt;br /&gt;            var answer=&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;[cList.Count];&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c &lt;span class="kwrd"&gt;in&lt;/span&gt; cList)&lt;br /&gt;            {&lt;br /&gt;                var digitsRight = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;();&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; keys)&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (s.Contains(c.ToString()))&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;int&lt;/span&gt; n = s.IndexOf(c);&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n != s.Length - 1)&lt;br /&gt;                            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = n + 1; i &amp;lt; s.Length; i++)&lt;br /&gt;                            {&lt;br /&gt;                                &lt;span class="kwrd"&gt;char&lt;/span&gt; d = &lt;span class="kwrd"&gt;char&lt;/span&gt;.Parse(s.Substring(i, 1));&lt;br /&gt;                                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!digitsRight.Contains(d))&lt;br /&gt;                                    digitsRight.Add(d);&lt;br /&gt;                            }&lt;br /&gt;                    }&lt;br /&gt;                answer[cList.Count-(digitsRight.Count+1)] = c;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(answer));&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-557078045624605898?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/557078045624605898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=557078045624605898' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/557078045624605898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/557078045624605898'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-79.html' title='PROJECT EULER #79'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5953107002904543296</id><published>2009-04-30T11:43:00.003+02:00</published><updated>2009-04-30T11:50:01.218+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #78</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=78"&gt;Link to Project Euler problem 78 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Let p(n) represent the number of different ways in which n coins can be separated into piles. For example, five coins can separated into piles in exactly seven different ways, so p(5)=7.&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;OOOOO&lt;br /&gt;OOOO O&lt;br /&gt;OOO OO&lt;br /&gt;OOO O O&lt;br /&gt;OO OO O&lt;br /&gt;OO O O O&lt;br /&gt;O O O O O&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;Find the least value of n for which p(n) is divisible by one million.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;Well this was difficult, not to mention memory hungry. This solution ate about 4-5 gigs of ram before coming up with the answer in the nick of time. It's a variation on the two previous problems.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 78&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            var pOfN = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt; { &lt;span class="kwrd"&gt;new&lt;/span&gt;[] { 1 }, &lt;span class="kwrd"&gt;new&lt;/span&gt;[] { 1,1 } };&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0;&lt;br /&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; success = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; n = 1;&lt;br /&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (!success)&lt;br /&gt;            {&lt;br /&gt;                n++;&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt;[] thisN = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[n+1];&lt;br /&gt;                thisN[0] = 0;&lt;br /&gt;                thisN[1] = 1;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 2; i &amp;lt; n+1; i++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; k = n - i;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (k &amp;lt; 0)&lt;br /&gt;                        thisN[i] = thisN[i - 1];&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; k)&lt;br /&gt;                        thisN[i] = thisN[i - 1] + pOfN[k][i];&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                        thisN[i] = thisN[i - 1] + pOfN[k][k];&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (thisN[i] &amp;gt; 10000000)&lt;br /&gt;                        thisN[i] = thisN[i]%1000000;&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (thisN[thisN.Length - 1]%10000 == 0)&lt;br /&gt;                    Console.WriteLine(thisN[thisN.Length - 1] + &lt;span class="str"&gt;", "&lt;/span&gt; + n);&lt;br /&gt;                pOfN.Add(thisN);&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (thisN[thisN.Length-1]%1000000==0)&lt;br /&gt;                {&lt;br /&gt;                    max = n;&lt;br /&gt;                    success = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            Console.Write(pOfN[max][max]+&lt;span class="str"&gt;", "&lt;/span&gt;+max);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5953107002904543296?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5953107002904543296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5953107002904543296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5953107002904543296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5953107002904543296'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-78.html' title='PROJECT EULER #78'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5230986465917687258</id><published>2009-04-29T14:52:00.003+02:00</published><updated>2009-04-29T14:56:56.611+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='Partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #77</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=77"&gt;Link to Project Euler problem 77&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It is possible to write ten as the sum of primes in exactly five different ways:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;7 + 3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;5 + 5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;5 + 3 + 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3 + 3 + 2 + 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;2 + 2 + 2 + 2 + 2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;What is the first value which can be written as the sum of primes in over five thousand different ways?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;A modification of the previous algorithm&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 77&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            var primes = GeneratePrimes(80);&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; maxNumber = 80,target=0,sum=0;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt;[,] a = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[maxNumber + 1, maxNumber + 1];&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; maxNumber + 1; i++)&lt;br /&gt;            {&lt;br /&gt;                a[i, 0] = 0;&lt;br /&gt;                a[0, i] = 1;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; n = 2;&lt;br /&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (sum &amp;lt; 5000)&lt;br /&gt;            {&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (n%2 == 0) a[n, 1] = 1;&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt; a[n, 1] = 0;&lt;br /&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 2; j &amp;lt; primes.Count; j++)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;int&lt;/span&gt; k = n - primes[j];&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (k &amp;lt; 0)&lt;br /&gt;                            a[n, j] = a[n, j - 1];&lt;br /&gt;                        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                            a[n, j] = a[n, j - 1] + a[k, j];&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (a[n, j] &amp;gt; 5000)&lt;br /&gt;                        {&lt;br /&gt;                            target = n;&lt;br /&gt;                            sum = a[n, j];&lt;br /&gt;                            &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                n++;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(sum + &lt;span class="str"&gt;"  "&lt;/span&gt; +target);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primeNumbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 0,2, 3 };&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                    primeNumbers.Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primeNumbers;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5230986465917687258?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5230986465917687258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5230986465917687258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5230986465917687258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5230986465917687258'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-77.html' title='PROJECT EULER #77'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-6388464008019275426</id><published>2009-04-29T10:59:00.003+02:00</published><updated>2009-04-29T11:09:00.528+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #76</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=76"&gt;Link to Project Euler problem 76&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It is possible to write five as a sum in exactly six different ways:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;4 + 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3 + 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3 + 1 + 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2 + 2 + 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2 + 1 + 1 + 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;1 + 1 + 1 + 1 + 1&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;How many different ways can one hundred be written as a sum of at least two positive integers?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;Here we go...yet more virgin territory for me, but isn't that the point? &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;Partitions....the clue is to store values somewhere, so we do it in a 2-D grid.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 76&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; n = 100;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt;[,] a = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[n + 1, n + 1];&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; n + 1; i++)&lt;br /&gt;            {&lt;br /&gt;                a[i, 0] = 0;&lt;br /&gt;                a[0, i] = 1;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; n + 1; i++)&lt;br /&gt;            {&lt;br /&gt;                a[i, 1] = 1;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 2; j &amp;lt; n + 1; j++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; k = i - j;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (k &amp;lt; 0)&lt;br /&gt;                        a[i, j] = a[i, j - 1];&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                        a[i, j] = a[i, j - 1] + a[k, j];&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(a[n, n - 1]);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-6388464008019275426?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/6388464008019275426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=6388464008019275426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6388464008019275426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6388464008019275426'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-76.html' title='PROJECT EULER #76'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8042056209634996059</id><published>2009-04-28T23:51:00.003+02:00</published><updated>2009-04-29T00:03:27.451+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pythagorean Triples'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #75</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=75"&gt;Link to Project Euler problem 75&lt;/a&gt;&lt;br /&gt;&lt;p face="verdana"&gt;&lt;br /&gt;It turns out that 12 cm is the smallest length of wire that can be bent to form an integer sided right angle triangle in exactly one way, but there are many more examples.&lt;/p&gt; &lt;p style="margin-left: 50px; font-family: verdana;"&gt;&lt;b&gt;12 cm&lt;/b&gt;: (3,4,5)&lt;br /&gt;&lt;b&gt;24 cm&lt;/b&gt;: (6,8,10)&lt;br /&gt;&lt;b&gt;30 cm&lt;/b&gt;: (5,12,13)&lt;br /&gt;&lt;b&gt;36 cm&lt;/b&gt;: (9,12,15)&lt;br /&gt;&lt;b&gt;40 cm&lt;/b&gt;: (8,15,17)&lt;br /&gt;&lt;b&gt;48 cm&lt;/b&gt;: (12,16,20)&lt;/p&gt; &lt;p face="verdana"&gt;In contrast, some lengths of wire, like 20 cm, cannot be bent to form an integer sided right angle triangle, and other lengths allow more than one solution to be found; for example, using 120 cm it is possible to form exactly three different integer sided right angle triangles.&lt;/p&gt; &lt;p style="margin-left: 50px; font-family: verdana;"&gt;&lt;b&gt;120 cm&lt;/b&gt;: (30,40,50), (20,48,52), (24,45,51)&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;Given that L is the length of the wire, for how many values of L &lt;img src="http://projecteuler.net/images/symbol_le.gif" alt="≤" style="vertical-align: middle;" border="0" width="10" height="12" /&gt; 2,000,000 can exactly one integer sided right angle triangle be formed?&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Using the two integer (m,n) technique for generating Pythagorean triples,I verify that they are primitive (using the IsRelativelyPrime method) then generate the non-primitives by simple scaling. Most of the time used goes to generate the list of prime factors of every number up to 2100000. The rest of the code uses 600 ms.&lt;/span&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; primeFactors = GeneratePrimeFactors(2100000);&lt;br /&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="rem"&gt;//Problem 75&lt;/span&gt;&lt;br /&gt;          DateTime start = DateTime.Now;&lt;br /&gt;          var pythagorasRecord = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;          &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; m = 2; m &amp;lt; 1000000/m; m++)&lt;br /&gt;              &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; n = 1; n &amp;lt; m; n++)&lt;br /&gt;              {&lt;br /&gt;                  &lt;span class="kwrd"&gt;long&lt;/span&gt; littleLeg = 2*m*n;&lt;br /&gt;                  &lt;span class="kwrd"&gt;long&lt;/span&gt; bigLeg = m*m - n*n;&lt;br /&gt;                  &lt;span class="kwrd"&gt;long&lt;/span&gt; hypotenuse = m*m + n*n;&lt;br /&gt;                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsRelativelyPrime(bigLeg, littleLeg))&lt;br /&gt;                  {&lt;br /&gt;                      &lt;span class="kwrd"&gt;long&lt;/span&gt; perimeter = littleLeg + bigLeg + hypotenuse;&lt;br /&gt;                      &lt;span class="kwrd"&gt;long&lt;/span&gt; sum = perimeter;&lt;br /&gt;                      &lt;span class="kwrd"&gt;while&lt;/span&gt; (sum &amp;lt;= 2000000)&lt;br /&gt;                      {&lt;br /&gt;                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (pythagorasRecord.ContainsKey(sum))&lt;br /&gt;                              pythagorasRecord[sum] += 1;&lt;br /&gt;                          &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                              pythagorasRecord.Add(sum, 1);&lt;br /&gt;                          sum += perimeter;&lt;br /&gt;                      }&lt;br /&gt;                  }&lt;br /&gt;              }&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; pair &lt;span class="kwrd"&gt;in&lt;/span&gt; pythagorasRecord)&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair.Value == 1)&lt;br /&gt;                  count++;&lt;br /&gt;          Console.WriteLine(count);&lt;br /&gt;          TimeSpan time = DateTime.Now - start;&lt;br /&gt;          Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;          Console.ReadKey();&lt;br /&gt;      }&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsRelativelyPrime (&lt;span class="kwrd"&gt;long&lt;/span&gt; m,&lt;span class="kwrd"&gt;long&lt;/span&gt; n)&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primeFactors[(&lt;span class="kwrd"&gt;int&lt;/span&gt;)m])&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;          &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; GeneratePrimeFactors(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;      {&lt;br /&gt;          var primes = GeneratePrimes(n);&lt;br /&gt;          var pF = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;          pF.Add(0,&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;{0});&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;              pF.Add(i,&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;());&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 1) &lt;span class="kwrd"&gt;return&lt;/span&gt; pF;&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primes)&lt;br /&gt;              &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;lt;= n; j += i)&lt;br /&gt;                  pF[j].Add(i);&lt;br /&gt;          &lt;span class="kwrd"&gt;return&lt;/span&gt; pF;&lt;br /&gt;      }&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;          &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;      {&lt;br /&gt;          var primeNumbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                  primeNumbers.Add(i);&lt;br /&gt;          &lt;span class="kwrd"&gt;return&lt;/span&gt; primeNumbers;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8042056209634996059?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8042056209634996059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8042056209634996059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8042056209634996059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8042056209634996059'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-75.html' title='PROJECT EULER #75'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-9048776446495146479</id><published>2009-04-28T14:47:00.005+02:00</published><updated>2009-04-28T14:56:00.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Factorials'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #74</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=74"&gt;Link to Project Euler problem 74&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The number 145 is well known for the property that the sum of the factorial of its digits is equal to 145:&lt;br /&gt;&lt;br /&gt;1! + 4! + 5! = 1 + 24 + 120 = 145&lt;br /&gt;&lt;br /&gt;Perhaps less well known is 169, in that it produces the longest chain of numbers that link back to 169; it turns out that there are only three such loops that exist:&lt;br /&gt;169 -&amp;gt; 363601 -&amp;gt; 1454 -&amp;gt; 169&lt;br /&gt;871 -&amp;gt; 45361 -&amp;gt; 871&lt;br /&gt;872 -&amp;gt; 45362 -&amp;gt; 872&lt;br /&gt;It is not difficult to prove that EVERY starting number will eventually get stuck in a loop. For example,&lt;br /&gt;69 -&amp;gt; 363600 -&amp;gt; 1454 -&amp;gt; 169 -&amp;gt; 363601 (-&amp;gt; 1454)&lt;br /&gt;78 -&amp;gt; 45360 -&amp;gt; 871 -&amp;gt; 45361 (-&amp;gt; 871)&lt;br /&gt;540 -&amp;gt; 145 (-&amp;gt; 145)&lt;br /&gt;Starting with 69 produces a chain of five non-repeating terms, but the longest non-repeating chain with a starting number below one million is sixty terms.&lt;br /&gt;How many chains, with a starting number below one million, contain exactly sixty non-repeating terms?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;This took too long (38 s) but I don't see any obvious optimisations (yet).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt; factorials = GenerateFactorials(9);&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 74&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; sixties = 0;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1000000; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;                var cycle = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt;();&lt;br /&gt;                &lt;span class="kwrd"&gt;long&lt;/span&gt; number = i;&lt;br /&gt;                &lt;span class="kwrd"&gt;while&lt;/span&gt; (!cycle.Contains(number))&lt;br /&gt;                {&lt;br /&gt;                    count++;&lt;br /&gt;                    cycle.Add(number);&lt;br /&gt;                    number = GenerateSumOfFactorials(number);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (count == 60)&lt;br /&gt;                    sixties++;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(sixties);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt; GenerateFactorials(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var factorialList = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt; { 1 };&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;long&lt;/span&gt; factorial = 1;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt;= i; j++)&lt;br /&gt;                    factorial *= j;&lt;br /&gt;                factorialList.Add(factorial);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; factorialList;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; GenerateSumOfFactorials(&lt;span class="kwrd"&gt;long&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; s = n.ToString();&lt;br /&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; sum = 0;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; s.Length; i++)&lt;br /&gt;                sum += factorials[&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s.Substring(i, 1))];&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; sum;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-9048776446495146479?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/9048776446495146479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=9048776446495146479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/9048776446495146479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/9048776446495146479'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-74.html' title='PROJECT EULER #74'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2330068481313700269</id><published>2009-04-28T13:51:00.004+02:00</published><updated>2009-04-28T14:02:16.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='Prime Factors'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #73</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=73"&gt;Link to Project Euler problem 73&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Consider the fraction, n/d, where n and d are positive integers. If n &amp;lt; d and HCF(n,d)=1, it is called a reduced proper fraction.&lt;br /&gt;If we list the set of reduced proper fractions for d &amp;lt;= 8 in ascending order of size, we get: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, &lt;strong&gt;3/8, 2/5, 3/7,&lt;/strong&gt; 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;It can be seen that there are 3 fractions between 1/3 and 1/2.&lt;br /&gt;How many fractions lie between 1/3 and 1/2 in the sorted set of reduced proper fractions for d &amp;lt;= 10,000?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#009900;"&gt;Yet again a big thanks to my mentor: After trying to brute-force this by generating all the fractions using the a/b &amp;lt; c/d ...insert (a+c) /(b+d) if b+d = n, type of solution (I stopped the program after 40 mins) he suggested looking at this strategy (took 1.05 s):&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 73&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; number =10000;&lt;br /&gt;            var primeFactors = GeneratePrimeFactors(number);&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0,min=0,sum=0;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = number; i &amp;gt; 3; i--)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;                max = (&lt;span class="kwrd"&gt;int&lt;/span&gt;) Math.Floor((&lt;span class="kwrd"&gt;decimal&lt;/span&gt;) i/2);&lt;br /&gt;                min=(&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Ceiling((&lt;span class="kwrd"&gt;decimal&lt;/span&gt;) i/3);&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = min; j &amp;lt;=max; j++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; test = primeFactors[i].Count;&lt;br /&gt;                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k &lt;span class="kwrd"&gt;in&lt;/span&gt; primeFactors[i])&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (j%k == 0)&lt;br /&gt;                            test--;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (test == primeFactors[i].Count)&lt;br /&gt;                        count++;&lt;br /&gt;                }&lt;br /&gt;                sum += count;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(sum);&lt;br /&gt;            Console.WriteLine();&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; GeneratePrimeFactors(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primes = GeneratePrimes(n);&lt;br /&gt;            var primeFactors = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; {&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; {0}};&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;                primeFactors.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;());&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n==1) &lt;span class="kwrd"&gt;return&lt;/span&gt; primeFactors;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primes)&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;lt;= n; j += i)&lt;br /&gt;                    primeFactors[j].Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primeFactors;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primeNumbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                    primeNumbers.Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primeNumbers;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2330068481313700269?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2330068481313700269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2330068481313700269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2330068481313700269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2330068481313700269'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-73.html' title='PROJECT EULER #73'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-885698705830449459</id><published>2009-04-28T10:10:00.005+02:00</published><updated>2009-04-28T10:45:39.630+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sieve of Eratosthenes'/><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Totient'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #72</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=72"&gt;Link to Project Euler problem 72 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Consider the fraction, n/d, where n and d are positive integers. If n&amp;lt;d and HCF(n,d)=1, it is called a reduced proper fraction.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;It can be seen that there are 21 elements in this set.&lt;br /&gt;How many elements would be contained in the set of reduced proper fractions for d &amp;lt;= 1,000,000?&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#009900;"&gt;This was really beautiful. First I brute-forced it, using 35 minutes and then I searched the solution-forum for a better algorithm, without success. Then my mentor suggested this approach, which is so elegant that it deserves a name: The Sieve of Senehtsotare...16 seconds!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 72&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; number = 1000000;&lt;br /&gt;            BigInt sum = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(&lt;span class="str"&gt;"1"&lt;/span&gt;);&lt;br /&gt;            var tots = GenerateTotients(number);&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; pair &lt;span class="kwrd"&gt;in&lt;/span&gt; tots)&lt;br /&gt;                sum += pair.Value;&lt;br /&gt;            Console.WriteLine(sum-2);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; GeneratePrimeFactors(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primes = GeneratePrimes(n);&lt;br /&gt;            var primeFactors = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;            primeFactors.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;{0});&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;                primeFactors.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;());&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n==1) &lt;span class="kwrd"&gt;return&lt;/span&gt; primeFactors;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primes)&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;lt;= n; j += i)&lt;br /&gt;                    primeFactors[j].Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primeFactors;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GenerateTotients(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var totients = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;{{0,0}};&lt;br /&gt;            List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; primeFactors = GeneratePrimeFactors(n);&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; primeFactors.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;double&lt;/span&gt; totient = i;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j &lt;span class="kwrd"&gt;in&lt;/span&gt; primeFactors[i])&lt;br /&gt;                    totient *= 1 - 1/(&lt;span class="kwrd"&gt;double&lt;/span&gt;) j;&lt;br /&gt;                totients.Add(i,(&lt;span class="kwrd"&gt;int&lt;/span&gt;)totient);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; totients;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primeNumbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                    primeNumbers.Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primeNumbers;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-885698705830449459?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/885698705830449459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=885698705830449459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/885698705830449459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/885698705830449459'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-72.html' title='PROJECT EULER #72'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8312707216472687264</id><published>2009-04-27T10:15:00.003+02:00</published><updated>2009-04-27T10:22:50.517+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Farey Sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #71</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=71"&gt;Link to Project Euler problem 71 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Consider the fraction, n/d, where n and d are positive integers. If nd and HCF(n,d)=1, it is called a reduced proper fraction.&lt;br /&gt;If we list the set of reduced proper fractions for d 8 in ascending order of size, we get:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;It can be seen that 2/5 is the fraction immediately to the left of 3/7.&lt;br /&gt;By listing the set of reduced proper fractions for d 1,000,000 in ascending order of size, find the numerator of the fraction immediately to the left of 3/7.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color:#009900;"&gt;This turned out to be too easy, althought the wording of the problem does say &lt;/span&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;&lt;em&gt;By listing the set of reduced proper fractions......&lt;/em&gt; &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;&lt;span style="font-family:verdana;"&gt;and I didn't do that...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 71&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; a=2,b=5,c=3,d=7;&lt;br /&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (b+d&amp;lt;=1000000)&lt;br /&gt;            {&lt;br /&gt;                a = a + c;&lt;br /&gt;                b = b + d;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(a + &lt;span class="str"&gt;"/"&lt;/span&gt;+b);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8312707216472687264?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8312707216472687264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8312707216472687264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8312707216472687264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8312707216472687264'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-71.html' title='PROJECT EULER #71'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-613821770122917514</id><published>2009-04-25T09:47:00.005+02:00</published><updated>2009-04-25T10:00:53.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Totient'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #70</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=70"&gt;Link to Project Euler problem 70&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;Euler's Totient function, φ(&lt;var&gt;n&lt;/var&gt;) [sometimes called the phi function], is used to determine the number of positive numbers less than or equal to &lt;var&gt;n&lt;/var&gt; which are relatively prime to &lt;var&gt;n&lt;/var&gt;. For example, as 1, 2, 4, 5, 7, and 8, are all less than nine and relatively prime to nine, φ(9)=6.&lt;br /&gt;The number 1 is considered to be relatively prime to every positive number, so φ(1)=1. &lt;/p&gt; &lt;p&gt;Interestingly, φ(87109)=79180, and it can be seen that 87109 is a permutation of 79180.&lt;/p&gt; &lt;p&gt;Find the value of &lt;var&gt;n&lt;/var&gt;, 1 &lt; &lt;var&gt;n&lt;/var&gt; &lt; src="http://projecteuler.net/index.php?section=problems&amp;amp;id=70" style="display: none;" alt="^("&gt;&lt;sup&gt;7&lt;/sup&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=70" style="display: none;" alt=")" /&gt;, for which φ(&lt;var&gt;n&lt;/var&gt;) is a permutation of &lt;var&gt;n&lt;/var&gt; and the ratio &lt;var&gt;n&lt;/var&gt;/φ(&lt;var&gt;n&lt;/var&gt;) produces a minimum.&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 153, 0);"&gt;Have to admit that I tried to brute-force this one and fell asleep on the couch. On awakening the answer lay there but the program would have happily run for some days (?) before completing. Armed with advice from the forum I learned that there are many ways to skin a totient...&lt;/p&gt;&lt;p style="color: rgb(0, 153, 0);"&gt;Euler (from projecteuler.net) wrote:&lt;br /&gt;&lt;/p&gt;&lt;blockquote style="color: rgb(0, 153, 0);"&gt;Given n=p1e1p2e2...p1e1, φ(n)=n(1-1/p1)(1-1/p2)...(1-1/pk).&lt;br /&gt;&lt;br /&gt;Now for n/φ(n) to be minimised, φ(n) must be as close to n as possible; that is, we want to maximise φ(n).&lt;br /&gt;&lt;br /&gt;When evaluating φ(n), we note that each time we multiply by (1-1/pi), it gets smaller, so we need to minimise the number of distinct prime factors in n.&lt;br /&gt;&lt;br /&gt;If n were prime, it would end in 1,3,7, or 9, and subtracting 1 only changes the last digit (to 0,2,6, or 8), so it could not be a permutation.&lt;br /&gt;&lt;br /&gt;Hence n=p1*p2 and we only need to search through a list of known prime pairs.&lt;br /&gt;&lt;br /&gt;In addition, φ(p1*p2)=p1*p2*(1-1/p1)(1-1/p2)=(p1-1)(p2-1), so we can compute φ(n) more efficiently.&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GenerateRangeOfPrimes(1000,5000);&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="rem"&gt;//Problem 70&lt;/span&gt;&lt;br /&gt;      DateTime start = DateTime.Now;&lt;br /&gt;      &lt;span class="kwrd"&gt;decimal&lt;/span&gt; min = 100;&lt;br /&gt;      &lt;span class="kwrd"&gt;int&lt;/span&gt; number = 1;&lt;br /&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = primes.Count - 1; j &amp;gt;= 0; j--)&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = j - 1; k &amp;gt;= 1; k--)&lt;br /&gt;          {&lt;br /&gt;              &lt;span class="kwrd"&gt;int&lt;/span&gt; i = primes[j]*primes[k];&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; 10000000)&lt;br /&gt;              {&lt;br /&gt;                  &lt;span class="kwrd"&gt;int&lt;/span&gt; totient = (primes[j] - 1)*(primes[k] - 1);&lt;br /&gt;                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPermutation(i, totient))&lt;br /&gt;                      &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;decimal&lt;/span&gt;) i/totient &amp;lt; min)&lt;br /&gt;                      {&lt;br /&gt;                          min = (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;) i/totient;&lt;br /&gt;                          number = i;&lt;br /&gt;                          Console.WriteLine(number + &lt;span class="str"&gt;": "&lt;/span&gt; + min + &lt;span class="str"&gt;" p1: "&lt;/span&gt; + primes[k] + &lt;span class="str"&gt;" p2: "&lt;/span&gt; + primes[j]);&lt;br /&gt;                      }&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      TimeSpan time = DateTime.Now - start;&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;      Console.ReadKey();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPermutation(&lt;span class="kwrd"&gt;int&lt;/span&gt; m,&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = m.ToString().ToCharArray();&lt;br /&gt;      &lt;span class="kwrd"&gt;char&lt;/span&gt;[] d = n.ToString().ToCharArray();&lt;br /&gt;      Array.Sort(c);&lt;br /&gt;      Array.Sort(d);&lt;br /&gt;      &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;      &lt;span class="kwrd"&gt;string&lt;/span&gt; t = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(d);&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (s == t) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GenerateRangeOfPrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; m,&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;  {&lt;br /&gt;      var p = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;              p.Add(i);&lt;br /&gt;      &lt;span class="kwrd"&gt;while&lt;/span&gt; (p[0] &amp;lt; m)&lt;br /&gt;          p.Remove(p[0]);&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; p;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-613821770122917514?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/613821770122917514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=613821770122917514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/613821770122917514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/613821770122917514'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-70.html' title='PROJECT EULER #70'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-6999225618790399655</id><published>2009-04-24T22:15:00.004+02:00</published><updated>2009-04-24T22:41:20.828+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Totient'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #69</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=69"&gt;Link to Project Euler problem 69&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt;  &lt;p&gt;Euler's Totient function, φ(&lt;i&gt;n&lt;/i&gt;) [sometimes called the phi function], is used to determine the number of numbers less than &lt;i&gt;n&lt;/i&gt; which are relatively prime to &lt;i&gt;n&lt;/i&gt;. For example, as 1, 2, 4, 5, 7, and 8, are all less than nine and relatively prime to nine, φ(9)=6.&lt;/p&gt; &lt;div style="margin-left: 100px;"&gt; &lt;table border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;i&gt;n&lt;/i&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Relatively Prime&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;φ(&lt;i&gt;n&lt;/i&gt;)&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;&lt;i&gt;n&lt;/i&gt;/φ(&lt;i&gt;n&lt;/i&gt;)&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;3&lt;/td&gt; &lt;td&gt;1,2&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;1.5&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;4&lt;/td&gt; &lt;td&gt;1,3&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;5&lt;/td&gt; &lt;td&gt;1,2,3,4&lt;/td&gt; &lt;td&gt;4&lt;/td&gt; &lt;td&gt;1.25&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;6&lt;/td&gt; &lt;td&gt;1,5&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;7&lt;/td&gt; &lt;td&gt;1,2,3,4,5,6&lt;/td&gt; &lt;td&gt;6&lt;/td&gt; &lt;td&gt;1.1666...&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;8&lt;/td&gt; &lt;td&gt;1,3,5,7&lt;/td&gt; &lt;td&gt;4&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;9&lt;/td&gt; &lt;td&gt;1,2,4,5,7,8&lt;/td&gt; &lt;td&gt;6&lt;/td&gt; &lt;td&gt;1.5&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;10&lt;/td&gt; &lt;td&gt;1,3,7,9&lt;/td&gt; &lt;td&gt;4&lt;/td&gt; &lt;td&gt;2.5&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;It can be seen that &lt;i&gt;n&lt;/i&gt;=6 produces a maximum &lt;i&gt;n&lt;/i&gt;/φ(&lt;i&gt;n&lt;/i&gt;) for &lt;i&gt;n&lt;/i&gt; &lt;img src="http://projecteuler.net/images/symbol_le.gif" alt="≤" style="vertical-align: middle;" border="0" width="10" height="12" /&gt; 10.&lt;/p&gt; &lt;p&gt;Find the value of &lt;i&gt;n&lt;/i&gt; &lt;img src="http://projecteuler.net/images/symbol_le.gif" alt="≤" style="vertical-align: middle;" border="0" width="10" height="12" /&gt; 1,000,000 for which &lt;i&gt;n&lt;/i&gt;/φ(&lt;i&gt;n&lt;/i&gt;) is a maximum.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Brute-forcing the totients up to a million would take hours (?) so I found a more elegant formula: &lt;/span&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;img style="color: rgb(0, 153, 0);" src="file:///C:/DOCUME%7E1/crystal/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                            &lt;/span&gt;&lt;img style="color: rgb(0, 153, 0);" src="http://eli.thegreenplace.net/wp-content/plugins/easy-latex/cache/tex_4c0564c669642d75f9cf76695472c56c.png" title="\varphi(n)= n \cdot \prod_{p|n} \left( 1-\frac{1}{p} \right)" class="tex" alt="\varphi(n)= n \cdot \prod_{p|n} \left( 1-\frac{1}{p} \right)" align="absbottom" /&gt;&lt;/p&gt;  &lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GeneratePrimes((&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(1000000));&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 69&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;double&lt;/span&gt; max = 0;&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; number = 1;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1000000; i &amp;gt;= 2; i--)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (i / Totient(i) &amp;gt; max)&lt;br /&gt;            {&lt;br /&gt;                max = i / Totient(i) &amp;gt; max ? i / Totient(i) : max;&lt;br /&gt;                number = i;&lt;br /&gt;            }&lt;br /&gt;        Console.WriteLine(number);&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; Totient(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;double&lt;/span&gt; totient = n;&lt;br /&gt;        var primeFactorsOfN = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primes)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0 &amp;amp;&amp;amp; n != i) primeFactorsOfN.Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;gt; Math.Sqrt(n)) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primeFactorsOfN)&lt;br /&gt;            totient *= 1 - 1 / (&lt;span class="kwrd"&gt;double&lt;/span&gt;)i;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; totient;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        var primes = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                primes.Add(i);&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; primes;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-6999225618790399655?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/6999225618790399655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=6999225618790399655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6999225618790399655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6999225618790399655'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-69.html' title='PROJECT EULER #69'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5878647432529514096</id><published>2009-04-24T13:53:00.004+02:00</published><updated>2009-04-24T22:41:57.813+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Combinations'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #68</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=68"&gt;Link to Project Euler problem 68&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Consider the following "magic" 3-gon ring, filled with the numbers 1 to 6, and each line adding to nine.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;img alt="" src="http://projecteuler.net/project/images/p_068_1.gif" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Working &lt;b&gt;clockwise&lt;/b&gt;, and starting from the group of three with the numerically lowest external node (4,3,2 in this example), each solution can be described uniquely. For example, the above solution can be described by the set: 4,3,2; 6,2,1; 5,1,3.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;It is possible to complete the ring with four different totals: 9, 10, 11, and 12. There are eight solutions in total.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;table cellpadding="0" cellspacing="0" width="400"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100"&gt;&lt;b&gt;&lt;span style="font-family:verdana;"&gt;Total&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td width="300"&gt;&lt;b&gt;&lt;span style="font-family:verdana;"&gt;Solution Set&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;9&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;4,2,3; 5,3,1; 6,1,2&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;9&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;4,3,2; 6,2,1; 5,1,3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;10&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;2,3,5; 4,5,1; 6,1,3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;10&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;2,5,3; 6,3,1; 4,1,5&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;11&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;1,4,6; 3,6,2; 5,2,4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;11&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;1,6,4; 5,4,2; 3,2,6&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;12&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;1,5,6; 2,6,4; 3,4,5&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;12&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;1,6,5; 3,5,4; 2,4,6&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;By concatenating each group it is possible to form 9-digit strings; the maximum string for a 3-gon ring is 432621513.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Using the numbers 1 to 10, and depending on arrangements, it is possible to form 16- and 17-digit strings. What is the maximum &lt;b&gt;16-digit&lt;/b&gt; string for a "magic" 5-gon ring?&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;img alt="" src="http://projecteuler.net/project/images/p_068_2.gif" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Thanks to Michael, my employer and mentor, I managed to see the wisdom of creating a data structure (an Ngon) to hold the data. Well there's hope for me yet. This is only the second time during these problems that I've made an object as part of the solution. The permutation code is lifted from &lt;/span&gt;&lt;a href="http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=48532"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;, although I must add that I read Knuth's "The Art of Computer Programming - pre-fascicle 3A" to understand the concepts involved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 68&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           var numbers = &lt;span class="kwrd"&gt;new&lt;/span&gt;[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };&lt;br /&gt;           var result = Permute(numbers);&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt; allResults = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;long&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;[] ints &lt;span class="kwrd"&gt;in&lt;/span&gt; result)&lt;br /&gt;           {&lt;br /&gt;               Ngon newNgon = &lt;span class="kwrd"&gt;new&lt;/span&gt; Ngon(ints);&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (newNgon.IsMagic)&lt;br /&gt;                   allResults.Add(newNgon.SolutionSet);&lt;br /&gt;           }&lt;br /&gt;           allResults.Sort();&lt;br /&gt;           Console.WriteLine(allResults[allResults.Count - 1]);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt; Permute(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] values)&lt;br /&gt;       {&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt; permList = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt;();&lt;br /&gt;           permuteWorker(values, 0, values.Length, &lt;span class="kwrd"&gt;ref&lt;/span&gt; permList);&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; permList;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; permuteWorker(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] values, &lt;span class="kwrd"&gt;int&lt;/span&gt; start, &lt;span class="kwrd"&gt;int&lt;/span&gt; n, &lt;span class="kwrd"&gt;ref&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt; permList)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (start == n - 1)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt;[] thisValues = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[values.Length];&lt;br /&gt;               values.CopyTo(thisValues, 0);&lt;br /&gt;               permList.Add(thisValues);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = start; i &amp;lt; n; i++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; tmp = values[i];&lt;br /&gt;                   values[i] = values[start];&lt;br /&gt;                   values[start] = tmp;&lt;br /&gt;                   permuteWorker(values, start + 1, n, &lt;span class="kwrd"&gt;ref&lt;/span&gt; permList);&lt;br /&gt;                   values[start] = values[i];&lt;br /&gt;                   values[i] = tmp;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Ngon&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; Numbers { get; set; }&lt;br /&gt;           &lt;span class="rem"&gt;//we have a pentagon, with point at top, and 5 'external' numbers&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//extending the sides of the pentagon to create 5 lines of numbers.&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//we number the internal points 0 to 4, and the external ones 5 to 9.&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//point 9 is always = 10. Numbers are clockwise with point 4 and point 9 at top.&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; Ngon(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] numbers)&lt;br /&gt;           {&lt;br /&gt;               Point0 = numbers[0];&lt;br /&gt;               Point1 = numbers[1];&lt;br /&gt;               Point2 = numbers[2];&lt;br /&gt;               Point3 = numbers[3];&lt;br /&gt;               Point4 = numbers[4];&lt;br /&gt;               Point5 = numbers[5];&lt;br /&gt;               Point6 = numbers[6];&lt;br /&gt;               Point7 = numbers[7];&lt;br /&gt;               Point8 = numbers[8];&lt;br /&gt;               Point9 = 10;&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point0 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point1 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point2 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point3 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point4 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point5 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point6 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point7 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point8 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Point9 { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line1Sum { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Point9 + Point4 + Point0; } }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line2Sum { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Point5 + Point0 + Point1; } }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line3Sum { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Point6 + Point1 + Point2; } }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line4Sum { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Point7 + Point2 + Point3; } }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line5Sum { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Point8 + Point3 + Point4; } }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line1&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] i = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[3] { Point9, Point4, Point0 };&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; 100 * i[0] + 10 * i[1] + i[2];&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line2&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] i = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[3] { Point5, Point0, Point1 };&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; 100 * i[0] + 10 * i[1] + i[2];&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line3&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] i = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[3] { Point6, Point1, Point2 };&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; 100 * i[0] + 10 * i[1] + i[2];&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line4&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] i = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[3] { Point7, Point2, Point3 };&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; 100 * i[0] + 10 * i[1] + i[2];&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Line5&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] i = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[3] { Point8, Point3, Point4 };&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; 100 * i[0] + 10 * i[1] + i[2];&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsMagic&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (Line1Sum == Line2Sum &amp;amp;&amp;amp; Line1Sum == Line3Sum &amp;amp;&amp;amp;&lt;br /&gt;                       Line1Sum == Line4Sum &amp;amp;&amp;amp; Line1Sum == Line5Sum)&lt;br /&gt;                       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; SolutionSet&lt;br /&gt;           {&lt;br /&gt;               get&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt;[] solutionSet = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[5];&lt;br /&gt;                   List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; temp = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; min = 1000, index = 0;&lt;br /&gt;                   temp.Add(Line1);&lt;br /&gt;                   temp.Add(Line2);&lt;br /&gt;                   temp.Add(Line3);&lt;br /&gt;                   temp.Add(Line4);&lt;br /&gt;                   temp.Add(Line5);&lt;br /&gt;                   &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; temp.Count; i++)&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (temp[i] &amp;lt; min)&lt;br /&gt;                       {&lt;br /&gt;                           min = temp[i];&lt;br /&gt;                           index = i;&lt;br /&gt;                       }&lt;br /&gt;                   &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; index; i++)&lt;br /&gt;                       temp.Add(temp[i]);&lt;br /&gt;                   temp.CopyTo(index, solutionSet, 0, 5);&lt;br /&gt;                   &lt;span class="kwrd"&gt;string&lt;/span&gt; solution = &lt;span class="str"&gt;""&lt;/span&gt;;&lt;br /&gt;                   &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; solutionSet.Length; i++)&lt;br /&gt;                       solution += solutionSet[i];&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt;.Parse(solution);&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5878647432529514096?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5878647432529514096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5878647432529514096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5878647432529514096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5878647432529514096'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-68.html' title='PROJECT EULER #68'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2882819169090771755</id><published>2009-04-23T12:08:00.004+02:00</published><updated>2009-04-23T12:18:56.121+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #67</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=67"&gt;Link to Project Euler problem 67&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.&lt;br /&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;7 5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;2 4 6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;8 5 9 3&lt;br /&gt;That is, 3 + 7 + 4 + 9 = 23.&lt;br /&gt;Find the maximum total from top to bottom in &lt;/span&gt;&lt;a href="http://projecteuler.net/project/triangle.txt"&gt;&lt;span style="font-family:verdana;"&gt;triangle.txt&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; (right click and 'Save Link/Target As...'), a 15K text file containing a triangle with one-hundred rows.&lt;br /&gt;NOTE: This is a much more difficult version of &lt;/span&gt;&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=18"&gt;&lt;span style="font-family:verdana;"&gt;Problem 18&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. It is not possible to try every route to solve this problem, as there are 299 altogether! If you could check one trillion (1012) routes every second it would take over twenty billion years to check them all. There is an efficient algorithm to solve it. ;o)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#009900;"&gt;I solved this when I did problem 18 just because I found a good algorithm back then.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 67&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../triangle.txt"&lt;/span&gt;);&lt;br /&gt;            &lt;span class="rem"&gt;//Treat the triangle as a 2 dimensional array[][]&lt;/span&gt;&lt;br /&gt;            List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; triangle = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;            &lt;span class="rem"&gt;//make the triangle&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 100; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sr.ReadLine();&lt;br /&gt;                &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = { &lt;span class="str"&gt;' '&lt;/span&gt; };&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt;[] sa = s.Split(c);&lt;br /&gt;                List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; line = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s1 &lt;span class="kwrd"&gt;in&lt;/span&gt; sa)&lt;br /&gt;                    line.Add(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s1));&lt;br /&gt;                triangle.Add(line);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="rem"&gt;//row&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 100; i++)&lt;br /&gt;                &lt;span class="rem"&gt;//column&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt;= i; j++)&lt;br /&gt;                    &lt;span class="rem"&gt;//do the edges&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (j == 0)&lt;br /&gt;                        triangle[i][0] = triangle[i][0] + triangle[i - 1][0];&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (j == triangle[i].Count - 1)&lt;br /&gt;                        triangle[i][triangle[i].Count - 1] = triangle[i][triangle[i].Count - 1] +&lt;br /&gt;                                                             triangle[i - 1][triangle[i - 1].Count - 1];&lt;br /&gt;                        &lt;span class="rem"&gt;//do the middle&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                        triangle[i][j] = triangle[i - 1][j - 1] + triangle[i][j] &amp;gt; triangle[i - 1][j] + triangle[i][j]&lt;br /&gt;                                             ? triangle[i - 1][j - 1] + triangle[i][j]&lt;br /&gt;                                             : triangle[i - 1][j] + triangle[i][j];&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; triangle[triangle.Count - 1])&lt;br /&gt;                max = i &amp;gt; max ? i : max;&lt;br /&gt;            Console.WriteLine(max);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2882819169090771755?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2882819169090771755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2882819169090771755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2882819169090771755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2882819169090771755'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-67.html' title='PROJECT EULER #67'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1876685142430696997</id><published>2009-04-23T11:46:00.005+02:00</published><updated>2009-04-23T23:40:33.535+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='Continued Fractions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #66</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=66"&gt;Link to Project Euler problem 66&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Consider quadratic Diophantine equations of the form:&lt;br /&gt;x&lt;sup&gt;2&lt;/sup&gt; – Dy&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;For example, when D = 13, the minimal solution in x is 649&lt;sup&gt;2&lt;/sup&gt; – 13 x 180&lt;sup&gt;2&lt;/sup&gt; = 1.&lt;br /&gt;It can be assumed that there are no solutions in positive integers when D is square.&lt;br /&gt;By finding minimal solutions in x for D = {2, 3, 5, 6, 7}, we obtain the following:&lt;br /&gt;3&lt;sup&gt;2&lt;/sup&gt; – 2 x 2&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;2&lt;sup&gt;2&lt;/sup&gt; – 3 x 1&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;9&lt;/span&gt;&lt;sup&gt;2&lt;/sup&gt; – 5 x 4&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;5&lt;sup&gt;2&lt;/sup&gt; – 6 x 2&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;8&lt;sup&gt;2&lt;/sup&gt; – 7 x 3&lt;sup&gt;2&lt;/sup&gt; = 1&lt;br /&gt;Hence, by considering minimal solutions in x for D &lt;= 7, the largest x is obtained when D = 5. Find the value of D 1000 in minimal solutions of x for which the largest value of x is obtained.&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;This was the synthesis of the two previous questions, with a bit of study at wolfram.com (&lt;a href="http://mathworld.wolfram.com/PellEquation.html"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;here&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://mathworld.wolfram.com/PeriodicContinuedFraction.html"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;here&lt;/span&gt;&lt;/a&gt;) and some pencil and paper walkthroughs it was do-able. I guess I've used 15 hours to do these three problems. Uncommenting the commented statements prints the [a&lt;sub&gt;0&lt;/sub&gt;;(a&lt;sub&gt;1&lt;/sub&gt;,a&lt;sub&gt;2&lt;/sub&gt;,....a&lt;sub&gt;r&lt;/sub&gt;,a&lt;sub&gt;r+1&lt;/sub&gt;)] series and the p&lt;sub&gt;r &lt;/sub&gt;/ q&lt;sub&gt;r&lt;/sub&gt; or p&lt;sub&gt;2r+1 &lt;/sub&gt;/ q&lt;sub&gt;2r+1&lt;/sub&gt; (depending on the parity of the series) convergents for each number.&lt;/span&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 66&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="rem"&gt;//first the code from problem 64&lt;/span&gt;&lt;br /&gt;           Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; numbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; number = 2; number &amp;lt;= 1000; number++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;bool&lt;/span&gt; repeat;&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; a = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number);&lt;br /&gt;               List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; sequence = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { a };&lt;br /&gt;               numbers.Add(number, sequence);&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; x = 1;&lt;br /&gt;               &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (Math.Sqrt(number) - (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number) == 0) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; b = number - a * a;&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; integerPart = x * ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number) + a) / b;&lt;br /&gt;                   numbers[number].Add(integerPart);&lt;br /&gt;                   a = -(a - integerPart * (b / x));&lt;br /&gt;                   x = (b / x);&lt;br /&gt;                   repeat = integerPart == 2 * numbers[number][0] ? &lt;span class="kwrd"&gt;true&lt;/span&gt; : &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;               } &lt;span class="kwrd"&gt;while&lt;/span&gt; (!repeat);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="rem"&gt;//then the modified code from problem 65&lt;/span&gt;&lt;br /&gt;           BigInt maxNumerator=0;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; d = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 2; i &amp;lt;= 1000; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (Math.Sqrt(i) - (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(i)!=0)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; r = numbers[i].Count-1;&lt;br /&gt;                   BigInt numerator_2 = 0, numerator_1 = 1, numerator = 0;&lt;br /&gt;                   BigInt denominator_2 = 1, denominator_1 = 0, denominator = 0;&lt;br /&gt;                   &lt;span class="rem"&gt;//var sequence = numbers[i];&lt;/span&gt;&lt;br /&gt;             &lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; ((r) % 2 != 0)&lt;span class="rem"&gt;//is odd&lt;/span&gt;&lt;br /&gt;                   {&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write("r is even ");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write("Sqrt " + i + ": [");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write(sequence[0] + ";(");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//for (int j = 1; j &amp;lt; sequence.Count; j++)&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//    if (j &amp;lt; sequence.Count - 1)&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//        Console.Write(sequence[j] + ",");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//    else&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//        Console.WriteLine(sequence[j] + ")]");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.WriteLine();&lt;/span&gt;&lt;br /&gt;                       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; numbers[i].Count; j++)&lt;br /&gt;                       {&lt;br /&gt;                           numerator = numbers[i][j] * numerator_1 + numerator_2;&lt;br /&gt;                           numerator_2 = numerator_1;&lt;br /&gt;                           numerator_1 = numerator;&lt;br /&gt;                           denominator = numbers[i][j] * denominator_1 + denominator_2;&lt;br /&gt;                           denominator_2 = denominator_1;&lt;br /&gt;                           denominator_1 = denominator;&lt;br /&gt;                       }&lt;br /&gt;                       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt; numbers[i].Count-1; j++)&lt;br /&gt;                       {&lt;br /&gt;                           numerator = numbers[i][j] * numerator_1 + numerator_2;&lt;br /&gt;                           numerator_2 = numerator_1;&lt;br /&gt;                           numerator_1 = numerator;&lt;br /&gt;                           denominator = numbers[i][j] * denominator_1 + denominator_2;&lt;br /&gt;                           denominator_2 = denominator_1;&lt;br /&gt;                           denominator_1 = denominator;&lt;br /&gt;                       }&lt;br /&gt;                   }&lt;br /&gt;                   &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;span class="rem"&gt;//is even&lt;/span&gt;&lt;br /&gt;                   {&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write("r is odd");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write("Sqrt " + i + ": [");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.Write(sequence[0] + ";(");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//for (int j = 1; j &amp;lt; sequence.Count; j++)&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//    if (j &amp;lt; sequence.Count - 1)&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//        Console.Write(sequence[j] + ",");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//    else&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//        Console.WriteLine(sequence[j] + ")]");&lt;/span&gt;&lt;br /&gt;                       &lt;span class="rem"&gt;//Console.WriteLine();&lt;/span&gt;&lt;br /&gt;                       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; numbers[i].Count-1; j++)&lt;br /&gt;                       {&lt;br /&gt;                           numerator = numbers[i][j] * numerator_1 + numerator_2;&lt;br /&gt;                           numerator_2 = numerator_1;&lt;br /&gt;                           numerator_1 = numerator;&lt;br /&gt;                           denominator = numbers[i][j] * denominator_1 + denominator_2;&lt;br /&gt;                           denominator_2 = denominator_1;&lt;br /&gt;                           denominator_1 = denominator;&lt;br /&gt;                       }&lt;br /&gt;                   }&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (numerator &amp;gt; maxNumerator)&lt;br /&gt;                   {&lt;br /&gt;                       maxNumerator = numerator;&lt;br /&gt;                       d = i;&lt;br /&gt;                   }&lt;br /&gt;                   &lt;span class="rem"&gt;//Console.WriteLine("x = " + numerator.ToString());&lt;/span&gt;&lt;br /&gt;                   &lt;span class="rem"&gt;//Console.WriteLine("y = " + denominator.ToString());&lt;/span&gt;&lt;br /&gt;                   &lt;span class="rem"&gt;//Console.WriteLine("-----------------------------------------");&lt;/span&gt;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(d);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1876685142430696997?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1876685142430696997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1876685142430696997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1876685142430696997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1876685142430696997'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-66.html' title='PROJECT EULER #66'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3996838930879010340</id><published>2009-04-21T23:52:00.004+02:00</published><updated>2009-04-23T23:39:47.888+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='Continued Fractions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #65</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=65"&gt;Link to Project Euler problem 65&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content" style="font-family: verdana;"&gt;&lt;p&gt;The square root of 2 can be written as an infinite continued fraction.&lt;/p&gt;&lt;div style="margin-left: 20px;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="vertical-align: middle;" alt="√" src="http://projecteuler.net/images/symbol_radic.gif" border="0" width="14" height="16" /&gt;2 = 1 +&lt;/td&gt;&lt;td colspan="4"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="135" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td colspan="3"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="110" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="85" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="60" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 + ...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;The infinite continued fraction can be written, &lt;img style="vertical-align: middle;" alt="√" src="http://projecteuler.net/images/symbol_radic.gif" border="0" width="14" height="16" /&gt;2 = [1;(2)], (2) indicates that 2 repeats &lt;i&gt;ad infinitum&lt;/i&gt;. In a similar way, &lt;img style="vertical-align: middle;" alt="√" src="http://projecteuler.net/images/symbol_radic.gif" border="0" width="14" height="16" /&gt;23 = [4;(1,3,1,8)].&lt;/p&gt;&lt;p&gt;It turns out that the sequence of partial values of continued fractions for square roots provide the best rational approximations. Let us consider the convergents for &lt;img style="vertical-align: middle;" alt="√" src="http://projecteuler.net/images/symbol_radic.gif" border="0" width="14" height="16" /&gt;2.&lt;/p&gt;&lt;div style="margin-left: 20px;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1 +&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="15" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;= 3/2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1 +&lt;/td&gt;&lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="50" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;= 7/5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="15" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1 +&lt;/td&gt;&lt;td colspan="3"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="80" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;= 17/12&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="50" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="15" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1 +&lt;/td&gt;&lt;td colspan="4"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="110" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;= 41/29&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td colspan="3"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="80" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="50" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2 +&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img alt="" src="http://projecteuler.net/images/blackdot.gif" width="15" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Hence the sequence of the first ten convergents for &lt;img style="vertical-align: middle;" alt="√" src="http://projecteuler.net/images/symbol_radic.gif" border="0" width="14" height="16" /&gt;2 are:&lt;/p&gt;&lt;div class="info"&gt;1, 3/2, 7/5, 17/12, 41/29, 99/70, 239/169, 577/408, 1393/985, 3363/2378, ...&lt;/div&gt;&lt;p&gt;What is most surprising is that the important mathematical constant,&lt;br /&gt;&lt;i&gt;e&lt;/i&gt; = [2; 1,2,1, 1,4,1, 1,6,1 , ... , 1,2&lt;i&gt;k&lt;/i&gt;,1, ...].&lt;/p&gt;&lt;p&gt;The first ten terms in the sequence of convergents for &lt;i&gt;e&lt;/i&gt; are:&lt;/p&gt;&lt;div class="info"&gt;2, 3, 8/3, 11/4, 19/7, 87/32, 106/39, 193/71, 1264/465, 1457/536, ...&lt;/div&gt;&lt;p&gt;The sum of digits in the numerator of the 10&lt;img style="display: none;" alt="^(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=65" /&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=65" /&gt; convergent is 1+4+5+7=17.&lt;/p&gt;&lt;p&gt;Find the sum of digits in the numerator of the 100&lt;img style="display: none;" alt="^(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=65" /&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=65" /&gt; convergent of the continued fraction for &lt;i&gt;e&lt;/i&gt;.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="rem"&gt;//Problem 65&lt;/span&gt;&lt;br /&gt;          DateTime start = DateTime.Now;&lt;br /&gt;          &lt;span class="rem"&gt;//e = [2;1,2,1,1,4,1,1,6,1,....,1,2k,1,...]&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;//numerator_n = a_n * numerator_n-1 + numerator_n-2&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;//denominator_n = a_n * denominator_n-1 + denominator_n-2&lt;/span&gt;&lt;br /&gt;          BigInt numerator_2 = 2, numerator_1 = 3, numerator=0;&lt;br /&gt;          &lt;span class="rem"&gt;//BigInt denominator_1 = 1,denominator_2 = 1, denominator;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;int&lt;/span&gt;    sum = 0;&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 2; i &amp;lt; 100; i++)&lt;br /&gt;          {&lt;br /&gt;              &lt;span class="kwrd"&gt;int&lt;/span&gt; a = (i + 1) % 3 == 0 ? 2 * ((i + 1) / 3) : 1;&lt;br /&gt;              numerator = numerator_1 * a + numerator_2;&lt;br /&gt;              numerator_2 = numerator_1;&lt;br /&gt;              numerator_1 = numerator;&lt;br /&gt;              &lt;span class="rem"&gt;//denominator = a * denominator_1 + denominator_2;&lt;/span&gt;&lt;br /&gt;              &lt;span class="rem"&gt;//denominator_2 = denominator_1;&lt;/span&gt;&lt;br /&gt;              &lt;span class="rem"&gt;//denominator_1 = denominator;&lt;/span&gt;&lt;br /&gt;              &lt;span class="rem"&gt;//Console.WriteLine(numerator);&lt;/span&gt;&lt;br /&gt;              &lt;span class="rem"&gt;//Console.WriteLine("-----------------------------------------");&lt;/span&gt;&lt;br /&gt;              &lt;span class="rem"&gt;//Console.WriteLine(denominator);&lt;/span&gt;&lt;br /&gt;          }&lt;br /&gt;          &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = numerator.ToString().ToCharArray();&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c1 &lt;span class="kwrd"&gt;in&lt;/span&gt; c)&lt;br /&gt;              sum += &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(c1.ToString());&lt;br /&gt;          Console.WriteLine(sum);&lt;br /&gt;          TimeSpan time = DateTime.Now - start;&lt;br /&gt;          Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;          Console.ReadKey();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3996838930879010340?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3996838930879010340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3996838930879010340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3996838930879010340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3996838930879010340'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-65.html' title='PROJECT EULER #65'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1983465789253237938</id><published>2009-04-21T18:19:00.006+02:00</published><updated>2009-04-21T19:10:41.072+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Continued Fractions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #64</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=64"&gt;Link to Project Euler problem 64&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;div class="problem_content"&gt; &lt;p&gt;All square roots are periodic when written as continued fractions and can be written in the form:&lt;/p&gt; &lt;div style="margin-left: 20px;"&gt; &lt;table border="0" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;&lt;i&gt;N&lt;/i&gt; = &lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;0&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; +&lt;/td&gt; &lt;td colspan="3"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="160" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;1&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; +&lt;/td&gt; &lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="125" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; +&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="95" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;3&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; + ...&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;For example, let us consider &lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23:&lt;/p&gt; &lt;div style="margin-left: 20px;"&gt; &lt;table border="0" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23 = 4 + &lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23 — 4 = 4 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="80" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 4 + &lt;/td&gt; &lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="100" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/div&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23 – 3&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;If we continue we would get the following expansion:&lt;/p&gt; &lt;div style="margin-left: 20px;"&gt; &lt;table border="0" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23 = 4 +&lt;/td&gt; &lt;td colspan="4"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="135" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1 +&lt;/td&gt; &lt;td colspan="3"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="110" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;3 +&lt;/td&gt; &lt;td colspan="2"&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="85" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1 +&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;8 + ...&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;The process can be summarised as follows:&lt;/p&gt; &lt;div style="margin-left: 20px;"&gt; &lt;table border="0" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;0&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 4,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+4&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 1 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;1&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 1,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+3)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;14&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 3 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;2&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 3,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;2(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+3)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;14&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 1 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;3&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 1,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+4)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 8 + &lt;/td&gt; &lt;td&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;4&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 8,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+4&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 1 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;5&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 1,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+3)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;14&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 3 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;2&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;6&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 3,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—3&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;2(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+3)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;14&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 1 + &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;a&lt;/i&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt="_(" /&gt;&lt;sub&gt;7&lt;/sub&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=64" style="display: none;" alt=")" /&gt; = 1,&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = &lt;/td&gt; &lt;td&gt;&lt;div style="text-align: center;"&gt;7(&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23+4)&lt;br /&gt;&lt;img src="http://projecteuler.net/images/blackdot.gif" alt="" width="60" height="1" /&gt;&lt;br /&gt;7&lt;/div&gt;&lt;/td&gt; &lt;td&gt; = 8 + &lt;/td&gt; &lt;td&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23—4&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;It can be seen that the sequence is repeating. For conciseness, we use the notation &lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;23 = [4;(1,3,1,8)], to indicate that the block (1,3,1,8) repeats indefinitely.&lt;/p&gt;  &lt;p&gt;The first ten continued fraction representations of (irrational) square roots are:&lt;/p&gt; &lt;p style="margin-left: 20px;"&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;2=[1;(2)], period=1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;3=[1;(1,2)], period=2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;5=[2;(4)], period=1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;6=[2;(2,4)], period=2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;7=[2;(1,1,1,4)], period=4&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;8=[2;(1,4)], period=2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;10=[3;(6)], period=1&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;11=[3;(3,6)], period=2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;12= [3;(2,6)], period=2&lt;br /&gt;&lt;img src="http://projecteuler.net/images/symbol_radic.gif" alt="√" style="vertical-align: middle;" width="14" border="0" height="16" /&gt;13=[3;(1,1,1,1,6)], period=5&lt;/p&gt; &lt;p&gt;Exactly four continued fractions, for &lt;i&gt;N&lt;/i&gt; &lt;img src="http://projecteuler.net/images/symbol_le.gif" alt="≤" style="vertical-align: middle;" width="10" border="0" height="12" /&gt; 13, have an odd period.&lt;/p&gt; &lt;p&gt;How many continued fractions for &lt;i&gt;N&lt;/i&gt; &lt;img src="http://projecteuler.net/images/symbol_le.gif" alt="≤" style="vertical-align: middle;" width="10" border="0" height="12" /&gt; 10000 have an odd period?&lt;/p&gt; &lt;/div&gt;&lt;p style="color: rgb(0, 153, 0);"&gt;This was certainly an education in continued fractions. Having understood them the trick is to find a way to calculate the salient numbers for the next iteration. 62.5 ms. Uncomment the foreach loop to print the series.&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 64&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; numbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; number = 2; number &amp;lt;= 10000; number++)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;bool&lt;/span&gt; repeat = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; a = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number);&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; sequence = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { a };&lt;br /&gt;           numbers.Add(number, sequence);&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; x = 1;&lt;br /&gt;           &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (Math.Sqrt(number) - (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number) == 0) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; b = number - a * a;&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; integerPart = x * ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Sqrt(number) + a) / b;&lt;br /&gt;               numbers[number].Add(integerPart);&lt;br /&gt;               a = -(a - integerPart * (b / x));&lt;br /&gt;               x = (b / x);&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (integerPart == 2 * numbers[number][0]) repeat = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           } &lt;span class="kwrd"&gt;while&lt;/span&gt; (!repeat);&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; oddSequence=0;&lt;br /&gt;       &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; pair &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; ((pair.Value.Count - 1)%2 != 0)&lt;br /&gt;               oddSequence++;&lt;br /&gt;           &lt;span class="rem"&gt;//Console.Write(pair.Key + ": ");&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//foreach (int sequence in pair.Value)&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//    Console.Write(sequence + ", ");&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//Console.WriteLine();&lt;/span&gt;&lt;br /&gt;       }&lt;br /&gt;       Console.WriteLine(oddSequence);&lt;br /&gt;       TimeSpan time = DateTime.Now - start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1983465789253237938?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1983465789253237938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1983465789253237938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1983465789253237938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1983465789253237938'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-64.html' title='PROJECT EULER #64'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3672443324192245058</id><published>2009-04-20T11:22:00.008+02:00</published><updated>2009-04-21T15:27:10.448+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #63</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=63"&gt;Link to Project Euler problem 63&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The 5-digit number, 16807=7&lt;sup&gt;5&lt;/sup&gt;, is also a fifth power. Similarly, the 9-digit number, 134217728=8&lt;sup&gt;9&lt;/sup&gt;, is a ninth power.&lt;br /&gt;How many n-digit positive integers exist which are also an nth power?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Using BigInt was one way, but there is a more elegant solution using logs:&lt;br /&gt;number of digits in 100 = 3, 1000 = 4, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;log 100 = 2, log 1000 = 3. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;number of digits in 567 = (int)((log 567)+1) = (int)2.75 + 1 = 3 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;number of digits in x = (int)(log x) + 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;number of digits in x^y = (int)((y * log x) + 1) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;number of digits in 10^y = y + 1, so only x = 1 to 9 hold solutions &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;then if x^y = y digits, =&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;y = (int) y * log x + 1, =&gt; (divide by y)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;1 = (int) log x + 1 / y, =&gt; (subtract log x)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;1 / y = (int)(1 - log x), =&gt; (invert)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;y = (int)(1/(1 - log x)).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;The BigInt solution:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 63&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 10; i++)&lt;br /&gt;           {&lt;br /&gt;               BigInt n = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(1);&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt; 25; j++)&lt;br /&gt;               {&lt;br /&gt;                   n *= i;&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (n.ToString().Length==j)&lt;br /&gt;                       count++;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(count);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;The log solution:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 63&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 10; i++)&lt;br /&gt;               count += (&lt;span class="kwrd"&gt;int&lt;/span&gt;) (1/(1 - Math.Log10(i)));&lt;br /&gt;           Console.WriteLine(count);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;49&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3672443324192245058?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3672443324192245058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3672443324192245058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3672443324192245058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3672443324192245058'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-63.html' title='PROJECT EULER #63'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5340876908981721359</id><published>2009-04-20T09:16:00.003+02:00</published><updated>2009-04-20T09:22:45.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #62</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=62"&gt;Link to Project Euler problem 62&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The cube, 41063625 (345&lt;sup&gt;3&lt;/sup&gt;), can be permuted to produce two other cubes: 56623104 (384&lt;sup&gt;3&lt;/sup&gt;) and 66430125 (405&lt;sup&gt;3&lt;/sup&gt;). In fact, 41063625 is the smallest cube which has exactly three permutations of its digits which are also cube.&lt;br /&gt;Find the smallest cube for which exactly five permutations of its digits are cube.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 62&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; success = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; sortedStrings = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5000; i &amp;lt; 10000; i++)&lt;br /&gt;            {&lt;br /&gt;                BigInt cube = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(i);&lt;br /&gt;                cube *= i * i;&lt;br /&gt;                &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = cube.ToString().ToCharArray();&lt;br /&gt;                Array.Sort(c);&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (s.StartsWith(&lt;span class="str"&gt;"-"&lt;/span&gt;))&lt;br /&gt;                    s.Remove(0, 1);&lt;br /&gt;                sortedStrings.Add(i, s);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5000; i &amp;lt; 9999; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; s;&lt;br /&gt;                sortedStrings.TryGetValue(i, &lt;span class="kwrd"&gt;out&lt;/span&gt; s);&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt;[] allCubes = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[5];&lt;br /&gt;                allCubes[0] = i;&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 1;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i + 1; j &amp;lt; 10000; j++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;string&lt;/span&gt; t;&lt;br /&gt;                    sortedStrings.TryGetValue(j, &lt;span class="kwrd"&gt;out&lt;/span&gt; t);&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (s == t)&lt;br /&gt;                    {&lt;br /&gt;                        count++;&lt;br /&gt;                        allCubes[count - 1] = j;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (count == 5)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 0; k &amp;lt; 5; k++)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span class="kwrd"&gt;int&lt;/span&gt; n = allCubes[k];&lt;br /&gt;                            BigInt number = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(n);&lt;br /&gt;                            number *= n*n;&lt;br /&gt;                            Console.WriteLine(allCubes[k]);&lt;br /&gt;                            Console.WriteLine(number);&lt;br /&gt;                        }&lt;br /&gt;                        Console.WriteLine();&lt;br /&gt;                        success = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                        &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (success) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color:#f6f6f6;"&gt;127035954683&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5340876908981721359?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5340876908981721359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5340876908981721359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5340876908981721359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5340876908981721359'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-62.html' title='PROJECT EULER #62'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-6611804760200427734</id><published>2009-04-19T23:38:00.006+02:00</published><updated>2009-04-20T09:23:23.822+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><category scheme='http://www.blogger.com/atom/ns#' term='Figurate Numbers'/><title type='text'>PROJECT EULER #61</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=61"&gt;Link to Project Euler problem 61&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content" style="FONT-FAMILY: verdana"&gt;&lt;p&gt;Triangle, square, pentagonal, hexagonal, heptagonal, and octagonal numbers are all figurate (polygonal) numbers and are generated by the following formulae:&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Triangle&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;3,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;+1)/2&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 3, 6, 10, 15, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Square&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;4,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;&lt;img style="DISPLAY: none" alt="^(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 4, 9, 16, 25, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pentagonal&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;5,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;(3&lt;i&gt;n&lt;/i&gt;-1)/2&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 5, 12, 22, 35, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hexagonal&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;6,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;(2&lt;i&gt;n&lt;/i&gt;-1)&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 6, 15, 28, 45, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Heptagonal&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;7,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;(5&lt;i&gt;n&lt;/i&gt;-3)/2&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 7, 18, 34, 55, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Octagonal&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;8,&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=&lt;i&gt;n&lt;/i&gt;(3&lt;i&gt;n&lt;/i&gt;-2)&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1, 8, 21, 40, 65, ...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;The ordered set of three 4-digit numbers: 8128, 2882, 8281, has three interesting properties.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The set is cyclic, in that the last two digits of each number is the first two digits of the next number (including the last number with the first).&lt;/li&gt;&lt;li&gt;Each polygonal type: triangle (P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;3,127&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=8128), square (P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;4,91&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=8281), and pentagonal (P&lt;img style="DISPLAY: none" alt="_(" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;&lt;sub&gt;5,44&lt;/sub&gt;&lt;img style="DISPLAY: none" alt=")" src="http://projecteuler.net/index.php?section=problems&amp;amp;id=61" /&gt;=2882), is represented by a different number in the set.&lt;/li&gt;&lt;li&gt;This is the only set of 4-digit numbers with this property.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Find the sum of the only ordered set of six cyclic 4-digit numbers for which each polygonal type: triangle, square, pentagonal, hexagonal, heptagonal, and octagonal, is represented by a different number in the set.&lt;/p&gt;&lt;/div&gt;&lt;span style="COLOR: rgb(0,153,0);font-family:verdana;" &gt;This has to be the ugliest thing I've written, but at 375 ms what the heck! I worked out the smallest number in the set for each figurate type which would result in a 4 digit number, then I create them and add them all to a dictionary with a key specifying the type and the number from the set, then I do 6 nested foreaches (yes it smells!) with conditions. The program finds 6 identical solutions (of course) so I stop it when 1 is found. The keys and values are printed to make sure I got it right!&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="rem"&gt;//Problem 61&lt;/span&gt;&lt;br /&gt;      DateTime start = DateTime.Now;&lt;br /&gt;      &lt;span class="kwrd"&gt;bool&lt;/span&gt; finished = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      var numbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 45; i * (i + 1) / 2 &amp;lt; 10000; i++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"tri"&lt;/span&gt; + i, (i * (i + 1) / 2).ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 32; j * j &amp;lt; 10000; j++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"squ"&lt;/span&gt; + j, (j * j).ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 26; k * (3 * k - 1) &amp;lt; 10000; k++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"pen"&lt;/span&gt; + k, (k * (3 * k - 1) / 2).ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; l = 23; l * (2 * l - 1) &amp;lt; 10000; l++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"hex"&lt;/span&gt; + l, (l * (2 * l - 1)).ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; m = 21; m * (5 * m - 3) / 2 &amp;lt; 10000; m++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"hep"&lt;/span&gt; + m, (m * (5 * m - 3) / 2).ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; n = 19; n * (3 * n - 2) &amp;lt; 10000; n++)&lt;br /&gt;          numbers.Add(&lt;span class="str"&gt;"oct"&lt;/span&gt; + n, (n * (3 * n - 2)).ToString());&lt;br /&gt;      &lt;span class="rem"&gt;//pick a number, find its type and original int,&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair1 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="kwrd"&gt;string&lt;/span&gt; s = pair1.Value;&lt;br /&gt;          &lt;span class="kwrd"&gt;string&lt;/span&gt; sk = pair1.Key;&lt;br /&gt;          &lt;span class="kwrd"&gt;string&lt;/span&gt; sn = sk.Substring(3, sk.Length - 3);&lt;br /&gt;          &lt;span class="kwrd"&gt;string&lt;/span&gt; sm = sk.Substring(0, 3);&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair2 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pair2.Key.StartsWith(sm) &amp;amp;&amp;amp;&lt;br /&gt;                  pair2.Key.Substring(3, pair2.Key.Length - 3) != sn)&lt;br /&gt;                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair2.Value.StartsWith(s.Substring(2, 2)))&lt;br /&gt;                  {&lt;br /&gt;                      &lt;span class="kwrd"&gt;string&lt;/span&gt; t = pair2.Value;&lt;br /&gt;                      &lt;span class="kwrd"&gt;string&lt;/span&gt; tk = pair2.Key;&lt;br /&gt;                      &lt;span class="kwrd"&gt;string&lt;/span&gt; tn = tk.Substring(3, tk.Length - 3);&lt;br /&gt;                      &lt;span class="kwrd"&gt;string&lt;/span&gt; tm = tk.Substring(0, 3);&lt;br /&gt;                      &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair3 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pair3.Key.StartsWith(sm) &amp;amp;&amp;amp;&lt;br /&gt;                              !pair3.Key.StartsWith(tm) &amp;amp;&amp;amp;&lt;br /&gt;                              pair3.Key.Substring(3, pair3.Key.Length - 3) != sn &amp;amp;&amp;amp;&lt;br /&gt;                              pair3.Key.Substring(3, pair3.Key.Length - 3) != tn)&lt;br /&gt;                              &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair3.Value.StartsWith(t.Substring(2, 2)))&lt;br /&gt;                              {&lt;br /&gt;                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; u = pair3.Value;&lt;br /&gt;                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; uk = pair3.Key;&lt;br /&gt;                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; un = uk.Substring(3, uk.Length - 3);&lt;br /&gt;                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; um = uk.Substring(0, 3);&lt;br /&gt;                                  &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair4 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;                                      &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pair4.Key.StartsWith(sm) &amp;amp;&amp;amp;&lt;br /&gt;                                          !pair4.Key.StartsWith(tm) &amp;amp;&amp;amp;&lt;br /&gt;                                          !pair4.Key.StartsWith(um) &amp;amp;&amp;amp;&lt;br /&gt;                                          pair4.Key.Substring(3, pair4.Key.Length - 3) != sn &amp;amp;&amp;amp;&lt;br /&gt;                                          pair4.Key.Substring(3, pair4.Key.Length - 3) != tn &amp;amp;&amp;amp;&lt;br /&gt;                                          pair4.Key.Substring(3, pair4.Key.Length - 3) != un)&lt;br /&gt;                                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair4.Value.StartsWith(u.Substring(2, 2)))&lt;br /&gt;                                          {&lt;br /&gt;                                              &lt;span class="kwrd"&gt;string&lt;/span&gt; v = pair4.Value;&lt;br /&gt;                                              &lt;span class="kwrd"&gt;string&lt;/span&gt; vk = pair4.Key;&lt;br /&gt;                                              &lt;span class="kwrd"&gt;string&lt;/span&gt; vn = vk.Substring(3, vk.Length - 3);&lt;br /&gt;                                              &lt;span class="kwrd"&gt;string&lt;/span&gt; vm = vk.Substring(0, 3);&lt;br /&gt;                                              &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair5 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;                                                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pair5.Key.StartsWith(sm) &amp;amp;&amp;amp;&lt;br /&gt;                                                      !pair5.Key.StartsWith(tm) &amp;amp;&amp;amp;&lt;br /&gt;                                                      !pair5.Key.StartsWith(um) &amp;amp;&amp;amp;&lt;br /&gt;                                                      !pair5.Key.StartsWith(vm) &amp;amp;&amp;amp;&lt;br /&gt;                                                      pair5.Key.Substring(3, pair5.Key.Length - 3) != sn &amp;amp;&amp;amp;&lt;br /&gt;                                                      pair5.Key.Substring(3, pair5.Key.Length - 3) != tn &amp;amp;&amp;amp;&lt;br /&gt;                                                      pair5.Key.Substring(3, pair5.Key.Length - 3) != un &amp;amp;&amp;amp;&lt;br /&gt;                                                      pair5.Key.Substring(3, pair5.Key.Length - 3) != vn)&lt;br /&gt;                                                      &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair5.Value.StartsWith(v.Substring(2, 2)))&lt;br /&gt;                                                      {&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;string&lt;/span&gt; w = pair5.Value;&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;string&lt;/span&gt; wk = pair5.Key;&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;string&lt;/span&gt; wn = wk.Substring(3, wk.Length - 3);&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;string&lt;/span&gt; wm = wk.Substring(0, 3);&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; pair6 &lt;span class="kwrd"&gt;in&lt;/span&gt; numbers)&lt;br /&gt;                                                              &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pair6.Key.StartsWith(sm) &amp;amp;&amp;amp;&lt;br /&gt;                                                                  !pair6.Key.StartsWith(tm) &amp;amp;&amp;amp;&lt;br /&gt;                                                                  !pair6.Key.StartsWith(um) &amp;amp;&amp;amp;&lt;br /&gt;                                                                  !pair6.Key.StartsWith(vm) &amp;amp;&amp;amp;&lt;br /&gt;                                                                  !pair6.Key.StartsWith(wm) &amp;amp;&amp;amp;&lt;br /&gt;                                                                  pair6.Key.Substring(3, pair6.Key.Length - 3) != sn &amp;amp;&amp;amp;&lt;br /&gt;                                                                  pair6.Key.Substring(3, pair6.Key.Length - 3) != tn &amp;amp;&amp;amp;&lt;br /&gt;                                                                  pair6.Key.Substring(3, pair6.Key.Length - 3) != un &amp;amp;&amp;amp;&lt;br /&gt;                                                                  pair6.Key.Substring(3, pair6.Key.Length - 3) != vn &amp;amp;&amp;amp;&lt;br /&gt;                                                                  pair6.Key.Substring(3, pair6.Key.Length - 3) != wn)&lt;br /&gt;                                                                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair6.Value.StartsWith(w.Substring(2, 2)) &amp;amp;&amp;amp;&lt;br /&gt;                                                                      pair6.Value.Substring(2, 2) == s.Substring(0, 2))&lt;br /&gt;                                                                  {&lt;br /&gt;                                                                      &lt;span class="kwrd"&gt;string&lt;/span&gt; x = pair6.Value;&lt;br /&gt;                                                                      &lt;span class="kwrd"&gt;string&lt;/span&gt; xk = pair6.Key;&lt;br /&gt;                                                                      &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s) +&lt;br /&gt;                                                                                &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t) +&lt;br /&gt;                                                                                &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(u) +&lt;br /&gt;                                                                                &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(v) +&lt;br /&gt;                                                                                &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(w) +&lt;br /&gt;                                                                                &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(x);&lt;br /&gt;                                                                      Console.WriteLine(sum);&lt;br /&gt;                                                                      Console.WriteLine(sk + &lt;span class="str"&gt;" "&lt;/span&gt; + tk + &lt;span class="str"&gt;" "&lt;/span&gt; + uk + &lt;span class="str"&gt;" "&lt;/span&gt; + vk + &lt;span class="str"&gt;" "&lt;/span&gt; + wk + &lt;span class="str"&gt;" "&lt;/span&gt; + xk);&lt;br /&gt;                                                                      Console.WriteLine(s + &lt;span class="str"&gt;" "&lt;/span&gt; + t + &lt;span class="str"&gt;" "&lt;/span&gt; + u + &lt;span class="str"&gt;" "&lt;/span&gt; + v + &lt;span class="str"&gt;" "&lt;/span&gt; + w + &lt;span class="str"&gt;" "&lt;/span&gt; + x);&lt;br /&gt;                                                                      finished = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                                                                      &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                                                                  }&lt;br /&gt;                                                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                                                      }&lt;br /&gt;                                              &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                                          }&lt;br /&gt;                                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                              }&lt;br /&gt;                      &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                  }&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;      TimeSpan time = DateTime.Now - start;&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;      Console.ReadKey();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="COLOR: rgb(246,246,246)"&gt;28684&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-6611804760200427734?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/6611804760200427734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=6611804760200427734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6611804760200427734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/6611804760200427734'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-61.html' title='PROJECT EULER #61'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8019955294770423808</id><published>2009-04-19T19:16:00.005+02:00</published><updated>2009-04-19T19:31:45.338+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #60</title><content type='html'>Link to Project Euler problem 60&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt;  &lt;p&gt;The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property.&lt;/p&gt; &lt;p&gt;Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;A more brute-force approach is probably not possible to achieve...but it runs in less than 8 seconds so I'm not complaining! I also took for granted that the first result would be the lowest sum.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;  &lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="rem"&gt;//Problem 60&lt;/span&gt;&lt;br /&gt;      DateTime start = DateTime.Now;&lt;br /&gt;      List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GeneratePrimes(10000);&lt;br /&gt;      &lt;span class="kwrd"&gt;int&lt;/span&gt; sum;&lt;br /&gt;      &lt;span class="kwrd"&gt;bool&lt;/span&gt; finished = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; primes.Count-4; i++)&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="kwrd"&gt;string&lt;/span&gt; s = primes[i].ToString();&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i+1; j &amp;lt; primes.Count-3; j++)&lt;br /&gt;          {&lt;br /&gt;              &lt;span class="kwrd"&gt;string&lt;/span&gt; t = primes[j].ToString();&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s + t)) &amp;amp;&amp;amp;&lt;br /&gt;                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t + s)))&lt;br /&gt;              {&lt;br /&gt;                  &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = j+1; k &amp;lt; primes.Count-2; k++)&lt;br /&gt;                  {&lt;br /&gt;                      &lt;span class="kwrd"&gt;string&lt;/span&gt; u = primes[k].ToString();&lt;br /&gt;                      &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s + u)) &amp;amp;&amp;amp;&lt;br /&gt;                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(u + s)) &amp;amp;&amp;amp;&lt;br /&gt;                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t + u)) &amp;amp;&amp;amp;&lt;br /&gt;                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(u + t)))&lt;br /&gt;                      {&lt;br /&gt;                          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; l = k+1; l &amp;lt; primes.Count-1; l++)&lt;br /&gt;                          {&lt;br /&gt;                              &lt;span class="kwrd"&gt;string&lt;/span&gt; v = primes[l].ToString();&lt;br /&gt;                              &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s + v))&amp;amp;&amp;amp;&lt;br /&gt;                                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t + v))&amp;amp;&amp;amp;&lt;br /&gt;                                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(u + v))&amp;amp;&amp;amp;&lt;br /&gt;                                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(v + s))&amp;amp;&amp;amp;&lt;br /&gt;                                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(v + t))&amp;amp;&amp;amp;&lt;br /&gt;                                  IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(v + u)))&lt;br /&gt;                              {&lt;br /&gt;                                  &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; m = l+1; m &amp;lt; primes.Count; m++)&lt;br /&gt;                                  {&lt;br /&gt;                                      &lt;span class="kwrd"&gt;string&lt;/span&gt; w = primes[m].ToString();&lt;br /&gt;                                      &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s + w))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t + w))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(u + w))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(v + w))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(w + s))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(w + t))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(w + u))&amp;amp;&amp;amp;&lt;br /&gt;                                          IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(w + v)))&lt;br /&gt;                                      {&lt;br /&gt;                                          sum = primes[i] +&lt;br /&gt;                                                primes[j] +&lt;br /&gt;                                                primes[k] +&lt;br /&gt;                                                primes[l] +&lt;br /&gt;                                                primes[m];&lt;br /&gt;                                          &lt;span class="rem"&gt;//min = sum &amp;lt; min ? sum : min;&lt;/span&gt;&lt;br /&gt;                                          Console.WriteLine(sum);&lt;br /&gt;                                          Console.WriteLine(primes[i] + &lt;span class="str"&gt;" "&lt;/span&gt; +&lt;br /&gt;                                                            primes[j] + &lt;span class="str"&gt;" "&lt;/span&gt; +&lt;br /&gt;                                                            primes[k] + &lt;span class="str"&gt;" "&lt;/span&gt; +&lt;br /&gt;                                                            primes[l] + &lt;span class="str"&gt;" "&lt;/span&gt; +&lt;br /&gt;                                                            primes[m]);&lt;br /&gt;                                          finished = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                                          &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                                      }&lt;br /&gt;                                  }&lt;br /&gt;                                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                              }&lt;br /&gt;                          }&lt;br /&gt;                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                      }&lt;br /&gt;                  }&lt;br /&gt;                  &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;              }&lt;br /&gt;           }&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (finished) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;      TimeSpan time = DateTime.Now - start;&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;      Console.ReadKey();&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;  {&lt;br /&gt;      var primes = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;          &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;              primes.Add(i);&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; primes;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;26033&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8019955294770423808?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8019955294770423808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8019955294770423808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8019955294770423808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8019955294770423808'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-60.html' title='PROJECT EULER #60'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-4433735330933537544</id><published>2009-04-19T16:39:00.004+02:00</published><updated>2009-04-19T16:58:38.101+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #59</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=59"&gt;Link to Project Euler problem 59&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt;  &lt;p&gt;Each character on a computer is assigned a unique code and the preferred standard is ASCII (American Standard Code for Information Interchange). For example, uppercase A = 65, asterisk (*) = 42, and lowercase k = 107.&lt;/p&gt; &lt;p&gt;A modern encryption method is to take a text file, convert the bytes to ASCII, then XOR each byte with a given value, taken from a secret key. The advantage with the XOR function is that using the same encryption key on the cipher text, restores the plain text; for example, 65 XOR 42 = 107, then 107 XOR 42 = 65.&lt;/p&gt; &lt;p&gt;For unbreakable encryption, the key is the same length as the plain text message, and the key is made up of random bytes. The user would keep the encrypted message and the encryption key in different locations, and without both "halves", it is impossible to decrypt the message.&lt;/p&gt; &lt;p&gt;Unfortunately, this method is impractical for most users, so the modified method is to use a password as a key. If the password is shorter than the message, which is likely, the key is repeated cyclically throughout the message. The balance for this method is using a sufficiently long password key for security, but short enough to be memorable.&lt;/p&gt; &lt;p&gt;Your task has been made easy, as the encryption key consists of three lower case characters. Using &lt;a href="http://projecteuler.net/project/cipher1.txt"&gt;cipher1.txt&lt;/a&gt; (right click and 'Save Link/Target As...'), a file containing the encrypted ASCII codes, and the knowledge that the plain text must contain common English words, decrypt the message and find the sum of the ASCII values in the original text.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style="font-family: verdana; color: rgb(0, 153, 0);"&gt;Read in the string, split up the letters in a string array, generate every possible password and do the XOR (^) on the relevant chars, adding them to a List&lt;char&gt;. Make a string of this and see if it contains " and " (with the spaces). Took a gamble on this and I'm sure there are better RegEx's to check for intelligent text, but as it's sunday today I'll write it off to divine inspiration (clue). Only one of the 17576 possible results seemed to contain " and ". The program prints it out (the password is interesting too ;-)).&lt;/span&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 59&lt;/span&gt;&lt;br /&gt;       &lt;span class="rem"&gt;//17576 possible combinations of letters&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../cipher1.txt"&lt;/span&gt;);&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;       List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;&amp;gt; decodedValues = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sr.ReadToEnd();&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt;[] letters = s.Split(&lt;span class="str"&gt;','&lt;/span&gt;);&lt;br /&gt;       Regex test = &lt;span class="kwrd"&gt;new&lt;/span&gt; Regex(&lt;span class="str"&gt;" and "&lt;/span&gt;);&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 97; i &amp;lt; 123; i++)&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 97; j &amp;lt; 123; j++)&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 97; k &amp;lt; 123; k++)&lt;br /&gt;               {&lt;br /&gt;                   List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt; decodedString = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;();&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; n = 0;&lt;br /&gt;                   &lt;span class="kwrd"&gt;while&lt;/span&gt; (n &amp;lt; letters.Length)&lt;br /&gt;                   {&lt;br /&gt;                       decodedString.Add((&lt;span class="kwrd"&gt;char&lt;/span&gt;) (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(letters[n]) ^ i));&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n + 1 &amp;lt; letters.Length)&lt;br /&gt;                           decodedString.Add((&lt;span class="kwrd"&gt;char&lt;/span&gt;) (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(letters[n + 1]) ^ j));&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n + 2 &amp;lt; letters.Length)&lt;br /&gt;                           decodedString.Add((&lt;span class="kwrd"&gt;char&lt;/span&gt;) (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(letters[n + 2]) ^ k));&lt;br /&gt;                       n += 3;&lt;br /&gt;                   }&lt;br /&gt;                   StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br /&gt;                   &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c &lt;span class="kwrd"&gt;in&lt;/span&gt; decodedString)&lt;br /&gt;                       sb.Append(c);&lt;br /&gt;                   &lt;span class="kwrd"&gt;string&lt;/span&gt; t = sb.ToString();&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (test.IsMatch(t))&lt;br /&gt;                       decodedValues.Add(decodedString);&lt;br /&gt;               }&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; decoded=&lt;span class="str"&gt;""&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt; words &lt;span class="kwrd"&gt;in&lt;/span&gt; decodedValues)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; ch &lt;span class="kwrd"&gt;in&lt;/span&gt; words)&lt;br /&gt;           {&lt;br /&gt;               decoded += ch.ToString();&lt;br /&gt;               sum += ch;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(decoded);&lt;br /&gt;           Console.WriteLine(sum);&lt;br /&gt;       }&lt;br /&gt;       TimeSpan time = DateTime.Now - start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;107359&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-4433735330933537544?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/4433735330933537544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=4433735330933537544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4433735330933537544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4433735330933537544'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-59.html' title='PROJECT EULER #59'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3090475797921550576</id><published>2009-04-18T21:02:00.002+02:00</published><updated>2009-04-18T21:12:57.090+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='Spirals'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #58</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=58"&gt;Link to Project Euler #58&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt;  &lt;p&gt;Starting with 1 and spiralling anticlockwise in the following way, a square spiral with side length 7 is formed.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;37&lt;/span&gt; 36 35 34 33 32 &lt;span style="color: rgb(255, 0, 0);"&gt;31&lt;/span&gt;&lt;br /&gt;38 &lt;span style="color: rgb(255, 0, 0);"&gt;17&lt;/span&gt; 16 15 14 &lt;span style="color: rgb(255, 0, 0);"&gt;13&lt;/span&gt; 30&lt;br /&gt;39 18 &lt;span style="color: rgb(255, 0, 0);"&gt; 5&lt;/span&gt;  4 &lt;span style="color: rgb(255, 0, 0);"&gt; 3&lt;/span&gt; 12 29&lt;br /&gt;40 19  6  1  2 11 28&lt;br /&gt;41 20 &lt;span style="color: rgb(255, 0, 0);"&gt; 7&lt;/span&gt;  8  9 10 27&lt;br /&gt;42 21 22 23 24 25 26&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;43&lt;/span&gt; 44 45 46 47 48 49&lt;/p&gt; &lt;p&gt;It is interesting to note that the odd squares lie along the bottom right diagonal, but what is more interesting is that 8 out of the 13 numbers lying along both diagonals are prime; that is, a ratio of 8/13 &lt;img src="http://projecteuler.net/images/symbol_asymp.gif" alt="≈" style="vertical-align: middle;" border="0" width="11" height="9" /&gt; 62%.&lt;/p&gt; &lt;p&gt;If one complete new layer is wrapped around the spiral above, a square spiral with side length 9 will be formed. If this process is continued, what is the side length of the square spiral for which the ratio of primes along both diagonals first falls below 10%?&lt;/p&gt;  &lt;/div&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" class="rem" &gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;for a n x n anticlockwise spiral, the corners are given by:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;top right: n^2 - 3n + 3,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;top left: n^2 - 2n + 2, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;bottom left: n^2 - n + 1, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;bottom right: n^2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt; {&lt;br /&gt;     &lt;span class="rem"&gt;//Problem 58&lt;/span&gt;&lt;br /&gt;     &lt;span class="rem"&gt;&lt;/span&gt;DateTime start = DateTime.Now;&lt;br /&gt;     &lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1,n;&lt;br /&gt;     &lt;span class="kwrd"&gt;double&lt;/span&gt; primeCount = 0, numberCount = 1;&lt;br /&gt;     &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;     {&lt;br /&gt;         n = 2*i + 1;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(n*n - 3*n + 3))&lt;br /&gt;             primeCount++;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(n*n - 2*n + 2))&lt;br /&gt;             primeCount++;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(n*n - n + 1))&lt;br /&gt;             primeCount++;&lt;br /&gt;         numberCount += 4;&lt;br /&gt;         i++;&lt;br /&gt;     } &lt;span class="kwrd"&gt;while&lt;/span&gt; (primeCount/numberCount &amp;gt; 0.1);&lt;br /&gt;     Console.WriteLine(n);&lt;br /&gt;     TimeSpan time = DateTime.Now - start;&lt;br /&gt;     Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;     Console.ReadKey();&lt;br /&gt; }&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;26241&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3090475797921550576?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3090475797921550576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3090475797921550576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3090475797921550576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3090475797921550576'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-58.html' title='PROJECT EULER #58'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2541431811482109455</id><published>2009-04-18T20:13:00.006+02:00</published><updated>2009-05-01T18:00:44.781+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='Continued Fractions'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #57</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=57"&gt;Link to Project Euler problem 57&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content" style="font-family: verdana;"&gt;&lt;p&gt;It is possible to show that the square root of two can be expressed as an infinite continued fraction.&lt;/p&gt;&lt;p style="text-align: center;"&gt;Sqrt(2) = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...&lt;/p&gt;&lt;p&gt;By expanding this for the first four iterations, we get:&lt;/p&gt;&lt;p&gt;1 + 1/2 = 3/2 = 1.5&lt;br /&gt;1 + 1/(2 + 1/2) = 7/5 = 1.4&lt;br /&gt;1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...&lt;br /&gt;1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The next three expansions are 99/70, 239/169, and 577/408, but the eighth expansion, 1393/985, is the first example where the number of digits in the numerator exceeds the number of digits in the denominator.&lt;/p&gt;&lt;p&gt;In the first one-thousand expansions, how many fractions contain a numerator with more digits than denominator?&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 57&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//(a+b)/b, where b = previous a+2*b and a = previous a + b.&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; count=0;&lt;br /&gt;        BigInt a = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(3);&lt;br /&gt;        BigInt b = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(2);&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1000; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (a.ToString().Length &amp;gt; b.ToString().Length)&lt;br /&gt;                count++;&lt;br /&gt;            a = 2*b + a;&lt;br /&gt;            b = a - b;&lt;br /&gt;        }&lt;br /&gt;        Console.WriteLine(count);&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2541431811482109455?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2541431811482109455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2541431811482109455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2541431811482109455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2541431811482109455'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-57.html' title='PROJECT EULER #57'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1933833080093876410</id><published>2009-04-18T15:16:00.003+02:00</published><updated>2009-05-01T18:00:31.538+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #56</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=56"&gt;Link to Project Euler problem 56&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt;  &lt;p&gt;A googol (10&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt="^(" /&gt;&lt;sup&gt;100&lt;/sup&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt=")" /&gt;) is a massive number: one followed by one-hundred zeros; 100&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt="^(" /&gt;&lt;sup&gt;100&lt;/sup&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt=")" /&gt; is almost unimaginably large: one followed by two-hundred zeros. Despite their size, the sum of the digits in each number is only 1.&lt;/p&gt; &lt;p&gt;Considering natural numbers of the form, &lt;i&gt;a&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt="^(" /&gt;&lt;sup&gt;b&lt;/sup&gt;&lt;img src="http://projecteuler.net/index.php?section=problems&amp;amp;id=56" style="display: none;" alt=")" /&gt;&lt;/i&gt;, where &lt;i&gt;a, b&lt;/i&gt; &lt;100,&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 56&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0,number=0,power=0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 99; i &amp;gt;90; i--)&lt;br /&gt;         {&lt;br /&gt;             BigInt n = i;&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 2; k &amp;lt;100; k++)&lt;br /&gt;             {&lt;br /&gt;                 n *= i;&lt;br /&gt;                 &lt;span class="kwrd"&gt;string&lt;/span&gt; s = n.ToString();&lt;br /&gt;                 &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;                 &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c &lt;span class="kwrd"&gt;in&lt;/span&gt; s)&lt;br /&gt;                     sum += &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(c.ToString());&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (sum &amp;gt; max)&lt;br /&gt;                 {&lt;br /&gt;                     max = sum;&lt;br /&gt;                     number = i;&lt;br /&gt;                     power = k;&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(max+&lt;span class="str"&gt;" "&lt;/span&gt;+number+&lt;span class="str"&gt;" to the "&lt;/span&gt;+power+&lt;span class="str"&gt;" power"&lt;/span&gt;);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1933833080093876410?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1933833080093876410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1933833080093876410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1933833080093876410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1933833080093876410'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-56.html' title='PROJECT EULER #56'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5918401353731646162</id><published>2009-04-18T13:15:00.004+02:00</published><updated>2009-05-01T18:00:08.012+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Palindromes'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #55</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=55"&gt;Link to Project Euler problem 55&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;If we take 47, reverse and add, 47 + 74 = 121, which is palindromic.&lt;/p&gt; &lt;p&gt;Not all numbers produce palindromes so quickly. For example,&lt;/p&gt; &lt;p style="margin-left: 50px;"&gt;349 + 943 = 1292,&lt;br /&gt;1292 + 2921 = 4213&lt;br /&gt;4213 + 3124 = 7337&lt;/p&gt; &lt;p&gt;That is, 349 took three iterations to arrive at a palindrome.&lt;/p&gt; &lt;p&gt;Although no one has proved it yet, it is thought that some numbers, like 196, never produce a palindrome. A number that never forms a palindrome through the reverse and add process is called a Lychrel number. Due to the theoretical nature of these numbers, and for the purpose of this problem, we shall assume that a number is Lychrel until proven otherwise. In addition you are given that for every number below ten-thousand, it will either (i) become a palindrome in less than fifty iterations, or, (ii) no one, with all the computing power that exists, has managed so far to map it to a palindrome. In fact, 10677 is the first number to be shown to require over fifty iterations before producing a palindrome: 4668731596684224866951378664 (53 iterations, 28-digits).&lt;/p&gt; &lt;p&gt;Surprisingly, there are palindromic numbers that are themselves Lychrel numbers; the first example is 4994.&lt;/p&gt; &lt;p&gt;How many Lychrel numbers are there below ten-thousand?&lt;/p&gt; &lt;p class="info"&gt;NOTE: Wording was modified slightly on 24 April 2007 to emphasise the theoretical nature of Lychrel numbers.&lt;/p&gt; &lt;/div&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;I used &lt;a href="http://www.carljohansen.co.uk/bigint/BigInt.cs.txt"&gt;BigInt&lt;/a&gt; again here&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 55&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; lychrel=0;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 10000; i++)&lt;br /&gt;       {&lt;br /&gt;           BigInt j = i;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt;(count&amp;lt;51)&lt;br /&gt;           {&lt;br /&gt;               j =ReverseAndAdd(j);&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPalindrome(j.ToString()))&lt;br /&gt;                   &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;               count++;&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (count == 50)&lt;br /&gt;                   lychrel++;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       Console.WriteLine(lychrel);&lt;br /&gt;       TimeSpan time = DateTime.Now - start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; BigInt ReverseAndAdd(BigInt n)&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = n.ToString().ToCharArray();&lt;br /&gt;       Array.Reverse(c);&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; n + s;&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPalindrome(&lt;span class="kwrd"&gt;string&lt;/span&gt; s)&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;char&lt;/span&gt;[] q = s.ToCharArray();&lt;br /&gt;       Array.Reverse(q);&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; r = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(q);&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (s.Equals(r))&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5918401353731646162?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5918401353731646162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5918401353731646162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5918401353731646162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5918401353731646162'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-55.html' title='PROJECT EULER #55'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1775663114878504023</id><published>2009-04-18T09:42:00.005+02:00</published><updated>2009-04-18T13:22:33.758+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #54</title><content type='html'>Link to Project Euler problem 54&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;In the card game poker, a hand consists of five cards and are ranked, from lowest to highest, in the following way:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt;High Card&lt;/b&gt;: Highest value card.&lt;/li&gt;&lt;li&gt;&lt;b&gt;One Pair&lt;/b&gt;: Two cards of the same value.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Two Pairs&lt;/b&gt;: Two different pairs.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Three of a Kind&lt;/b&gt;: Three cards of the same value.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Straight&lt;/b&gt;: All cards are consecutive values.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Flush&lt;/b&gt;: All cards of the same suit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Full House&lt;/b&gt;: Three of a kind and a pair.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Four of a Kind&lt;/b&gt;: Four cards of the same value.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Straight Flush&lt;/b&gt;: All cards are consecutive values of same suit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Royal Flush&lt;/b&gt;: Ten, Jack, Queen, King, Ace, in same suit.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The cards are valued in the order:&lt;br /&gt;2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace.&lt;/p&gt; &lt;p&gt;If two players have the same ranked hands then the rank made up of the highest value wins; for example, a pair of eights beats a pair of fives (see example 1 below). But if two ranks tie, for example, both players have a pair of queens, then highest cards in each hand are compared (see example 4 below); if the highest cards tie then the next highest cards are compared, and so on.&lt;/p&gt; &lt;p&gt;Consider the following five hands dealt to two players:&lt;/p&gt; &lt;div style="text-align: center;"&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Hand&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Player 1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Player 2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Winner&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="vertical-align: top;"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;5H 5C 6S 7S KD&lt;br /&gt;&lt;div class="info"&gt;Pair of Fives&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2C 3S 8S 8D TD&lt;br /&gt;&lt;div class="info"&gt;Pair of Eights&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;Player 2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="vertical-align: top;"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;5D 8C 9S JS AC&lt;br /&gt;&lt;div class="info"&gt;Highest card Ace&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2C 5C 7D 8S QH&lt;br /&gt;&lt;div class="info"&gt;Highest card Queen&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;Player 1&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="vertical-align: top;"&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2D 9C AS AH AC&lt;br /&gt;&lt;div class="info"&gt;Three Aces&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;3D 6D 7D TD QD&lt;br /&gt;&lt;div class="info"&gt;Flush  with Diamonds&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;Player 2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="vertical-align: top;"&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;4D 6S 9H QH QC&lt;br /&gt;&lt;div class="info"&gt;Pair of Queens&lt;br /&gt;Highest card Nine&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;3D 6D 7H QD QS&lt;br /&gt;&lt;div class="info"&gt;Pair of Queens&lt;br /&gt;Highest card Seven&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;Player 1&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="vertical-align: top;"&gt;&lt;b&gt;5&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2H 2D 4C 4D 4S&lt;br /&gt;&lt;div class="info"&gt;Full House&lt;br /&gt;With Three Fours&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;3C 3D 3S 9S 9D&lt;br /&gt;&lt;div class="info"&gt;Full House&lt;br /&gt;with Three Threes&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;Player 1&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;The file, &lt;a href="http://projecteuler.net/project/poker.txt"&gt;poker.txt&lt;/a&gt;, contains one-thousand random hands dealt to two players. Each line of the file contains ten cards (separated by a single space): the first five are Player 1's cards and the last five are Player 2's cards. You can assume that all hands are valid (no invalid characters or repeated cards), each player's hand is in no specific order, and in each hand there is a clear winner.&lt;/p&gt; &lt;p&gt;How many hands does Player 1 win?&lt;/p&gt; &lt;/div&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;I'd previously made a simple class library for constructing card games as an exercise in OOD. This creates a deck and shuffles etc but the only relevant class for this problem is the Card class and it's Enum:&lt;/span&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Card.cs:&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; CardLibrary&lt;br /&gt;{&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// A Card Object has a suit, a value (A - K) and a rank (1 - 52)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Card : IComparable&amp;lt;Card&amp;gt;&lt;br /&gt;{&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// default constructor&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Card()&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// standard constructor. Also calculates the rank (1-52) &lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;param name="suit"&amp;gt;(Suits)0 = Clubs, (Suits)1 = Diamonds&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// (Suits)2 = Hearts, (Suits)3 = Spades&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="rem"&gt;/// &amp;lt;param name="type"&amp;gt;(CardType)0 = 2 etc.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Card(Suits suit,CardType type)&lt;br /&gt; {&lt;br /&gt;     Suit = suit;&lt;br /&gt;     FaceValue = type;&lt;br /&gt;     CardRank = ((&lt;span class="kwrd"&gt;int&lt;/span&gt;) suit*13) + (&lt;span class="kwrd"&gt;int&lt;/span&gt;) type;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Suits Suit { get;  set; }&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; CardType FaceValue { get; set; }&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; TrueValue&lt;br /&gt; {&lt;br /&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)FaceValue)+2; }&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; set { }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CardRank&lt;br /&gt; {&lt;br /&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)Suit * 13) + (&lt;span class="kwrd"&gt;int&lt;/span&gt;)FaceValue; }&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; set { }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="preproc"&gt;#region&lt;/span&gt; IComparable Members&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CompareTo(Card other)&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; FaceValue - other.FaceValue;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;CardTypes.cs&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// The suits&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; Suits&lt;br /&gt;{&lt;br /&gt;Clubs=0,&lt;br /&gt;Diamonds=1,&lt;br /&gt;Hearts=2,&lt;br /&gt;Spades=3&lt;br /&gt;}&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// The values&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; CardType&lt;br /&gt;{&lt;br /&gt;Two=0,&lt;br /&gt;Three=1,&lt;br /&gt;Four=2,&lt;br /&gt;Five=3,&lt;br /&gt;Six=4,&lt;br /&gt;Seven=5,&lt;br /&gt;Eight=6,&lt;br /&gt;Nine=7,&lt;br /&gt;Ten=8,&lt;br /&gt;Jack=9,&lt;br /&gt;Queen=10,&lt;br /&gt;King=11,&lt;br /&gt;Ace=12&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Then comes program.cs:&lt;/span&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; CardLibrary;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 54&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../poker.txt"&lt;/span&gt;);&lt;br /&gt;         List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; allHands = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; player1score = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;while&lt;/span&gt; (!sr.EndOfStream)&lt;br /&gt;         {&lt;br /&gt;             allHands.Add(sr.ReadLine());&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; allHands)&lt;br /&gt;         {&lt;br /&gt;             i++;&lt;br /&gt;             &lt;span class="kwrd"&gt;string&lt;/span&gt;[] cards1 = s.Substring(0, 14).Split(&lt;span class="str"&gt;' '&lt;/span&gt;);&lt;br /&gt;             &lt;span class="kwrd"&gt;string&lt;/span&gt;[] cards2 = s.Substring(15, 14).Split(&lt;span class="str"&gt;' '&lt;/span&gt;);&lt;br /&gt;             Hand Player1 = GeneratePokerHand(cards1);&lt;br /&gt;             Hand Player2 = GeneratePokerHand(cards2);&lt;br /&gt;             &lt;span class="kwrd"&gt;double&lt;/span&gt; p1score = EvaluatePokerHand(Player1);&lt;br /&gt;             &lt;span class="kwrd"&gt;double&lt;/span&gt; p2score = EvaluatePokerHand(Player2);&lt;br /&gt;             Console.WriteLine(i+&lt;span class="str"&gt;" "&lt;/span&gt;+p1score + &lt;span class="str"&gt;"\t\t\t"&lt;/span&gt;+p2score);&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (p1score &amp;gt; p2score)&lt;br /&gt;                 player1score++;&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(player1score);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Hand GeneratePokerHand(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] cards)&lt;br /&gt;     {&lt;br /&gt;         Hand hand = &lt;span class="kwrd"&gt;new&lt;/span&gt; Hand(&lt;span class="str"&gt;"player"&lt;/span&gt;);&lt;br /&gt;         &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; cards)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = s.ToCharArray();&lt;br /&gt;             Card card = &lt;span class="kwrd"&gt;new&lt;/span&gt; Card();&lt;br /&gt;             hand.Add(card);&lt;br /&gt;             &lt;span class="kwrd"&gt;switch&lt;/span&gt; (c[0])&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'2'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = 0;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'3'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)1;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'4'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)2;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'5'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)3;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'6'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)4;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'7'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)5;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'8'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)6;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'9'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)7;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'T'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)8;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'J'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)9;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'Q'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)10;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'K'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)11;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'A'&lt;/span&gt;:&lt;br /&gt;                     card.FaceValue = (CardType)12;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;             }&lt;br /&gt;             &lt;span class="kwrd"&gt;switch&lt;/span&gt; (c[1])&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'C'&lt;/span&gt;:&lt;br /&gt;                     card.Suit = 0;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'D'&lt;/span&gt;:&lt;br /&gt;                     card.Suit = (Suits)1;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'H'&lt;/span&gt;:&lt;br /&gt;                     card.Suit = (Suits)2;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;'S'&lt;/span&gt;:&lt;br /&gt;                     card.Suit = (Suits)3;&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         hand.Sort();&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; hand;&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; EvaluatePokerHand(Hand hand)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//TrueValue = (int)FaceValue + 2.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//High card value of hand: 23457 (0,200718) to 9JQKA (0,493269) = (highest card * 14^4 + next highest card * 14^3...etc)/1000000.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Pair: 22345 (2,000617) to AAKQJ (14,002305) =  TrueValue of pair (2 = 2) + high card value of rest of hand.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Two Pairs: 22334(15,000002) to AAKKQ (169,00001) = 13*TrueValue of highest pair + TrueValue of second pair + high card value of last card.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Tres: 22234 (202) to AAAKQ (214) = 200 + TrueValue of tres.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Straight: 23456 (256) to AKQJ10 (264) =  250 + TrueValue of highest card.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Flush: 23457 (300,200718) to 9JQKA (300,493269) = 300 + high card value of hand.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//House: 22233 (352) to AAAKK(364) = 350 + TrueValue of tres.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Four: 22223 (402) to AAAAK (414) = 400 + TrueValue of four.&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;//Straight Flush: 23456 (456) to AKQJ10 (464) = 450 + trueValue of highest card.&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;double&lt;/span&gt; points = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; flush = 1, straight = 1;&lt;br /&gt;         &lt;span class="rem"&gt;//flushes and straights&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; hand.Count; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (hand[0].Suit == hand[i].Suit)&lt;br /&gt;                 flush++;&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (hand[i].FaceValue == hand[0].FaceValue + i)&lt;br /&gt;                 straight++;&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (straight == 5)&lt;br /&gt;         {&lt;br /&gt;             points = flush == 5&lt;br /&gt;                          ? 450 + hand[4].TrueValue&lt;br /&gt;                          : 250 + hand[4].TrueValue;&lt;br /&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt; points;&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (flush == 5)&lt;br /&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt; 300 + EvaluateCards(hand);&lt;br /&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; numberOfPairs = 0, numberOfTres = 0, cardValue = 0;&lt;br /&gt;         &lt;span class="rem"&gt;//check for pairs/threes/fours&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; hand.Count - 1; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;int&lt;/span&gt; sameValue = 1;&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i + 1; j &amp;lt; hand.Count; j++)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (hand[i].FaceValue == hand[j].FaceValue)&lt;br /&gt;                     sameValue++;&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (sameValue == 4)&lt;br /&gt;                     &lt;span class="kwrd"&gt;return&lt;/span&gt; 400 + hand[j].TrueValue;&lt;br /&gt;             }&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (sameValue == 3)&lt;br /&gt;             {&lt;br /&gt;                 numberOfTres++;&lt;br /&gt;                 numberOfPairs--;&lt;br /&gt;                 cardValue = hand[i].TrueValue;&lt;br /&gt;             }&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (sameValue == 2)&lt;br /&gt;                 numberOfPairs++;&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="rem"&gt;//two pairs&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (numberOfPairs == 2)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;int&lt;/span&gt; pairNumber = 2;&lt;br /&gt;             &lt;span class="kwrd"&gt;int&lt;/span&gt; i = hand.Count - 1;&lt;br /&gt;             &lt;span class="kwrd"&gt;while&lt;/span&gt; (hand.Count &amp;gt; 1)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (hand[i - 1].FaceValue == hand[i].FaceValue)&lt;br /&gt;                 {&lt;br /&gt;                     &lt;span class="kwrd"&gt;if&lt;/span&gt; (pairNumber == 2)&lt;br /&gt;                     {&lt;br /&gt;                         points = 13 * (&lt;span class="kwrd"&gt;int&lt;/span&gt;)hand[i].FaceValue;&lt;br /&gt;                         pairNumber--;&lt;br /&gt;                     }&lt;br /&gt;                     &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                         points += hand[i].TrueValue;&lt;br /&gt;                     hand.Remove(hand[i]);&lt;br /&gt;                     hand.Remove(hand[i - 1]);&lt;br /&gt;                     i -= 2;&lt;br /&gt;                 }&lt;br /&gt;                 &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                     i--;&lt;br /&gt;             }&lt;br /&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt; points + EvaluateCards(hand);&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="rem"&gt;//pair&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (numberOfPairs == 1 &amp;amp;&amp;amp; numberOfTres == 0)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;int&lt;/span&gt; i = hand.Count - 1;&lt;br /&gt;             &lt;span class="kwrd"&gt;while&lt;/span&gt; (hand.Count &amp;gt; 3)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (hand[i - 1].FaceValue == hand[i].FaceValue)&lt;br /&gt;                 {&lt;br /&gt;                     points += hand[i].TrueValue;&lt;br /&gt;                     hand.Remove(hand[i]);&lt;br /&gt;                     hand.Remove(hand[i - 1]);&lt;br /&gt;                     &lt;span class="kwrd"&gt;return&lt;/span&gt; points + EvaluateCards(hand);&lt;br /&gt;                 }&lt;br /&gt;                     i--;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="rem"&gt;//3 of a kind or house&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (numberOfTres == 1)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (numberOfPairs == 1)&lt;br /&gt;                 &lt;span class="kwrd"&gt;return&lt;/span&gt; 350 + cardValue;&lt;br /&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt; 200 + cardValue;&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="rem"&gt;//high card&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; EvaluateCards(hand);&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; EvaluateCards(List&amp;lt;Card&amp;gt; cards)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="kwrd"&gt;double&lt;/span&gt; points = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = cards.Count-1; i &amp;gt;= 0; i--)&lt;br /&gt;             points += (&lt;span class="kwrd"&gt;int&lt;/span&gt;)cards[i].FaceValue * ((Math.Pow(14, i) / 1000000));&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; points;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;376&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1775663114878504023?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1775663114878504023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1775663114878504023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1775663114878504023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1775663114878504023'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-54.html' title='PROJECT EULER #54'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3418115808517373053</id><published>2009-04-17T14:45:00.007+02:00</published><updated>2009-05-01T19:01:03.971+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigInt'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><category scheme='http://www.blogger.com/atom/ns#' term='Pascal&apos;s Triangle'/><title type='text'>PROJECT EULER #53</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=53"&gt;Link to Project Euler problem 53&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;There are exactly ten ways of selecting three from five, 12345:&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;123, 124, 125, 134, 135, 145, 234, 235, 245, and 345&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;In combinatorics, we use the notation, &lt;sup&gt;5&lt;/sup&gt;C&lt;sub&gt;3&lt;/sub&gt; = 10.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;In general,&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;&lt;sup&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sup&gt;C&lt;sub&gt;&lt;i&gt;r&lt;/i&gt;&lt;/sub&gt; = &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;i&gt;n&lt;/i&gt;!&lt;br /&gt;______&lt;br /&gt;&lt;i&gt;r&lt;/i&gt;!(&lt;i&gt;n-r&lt;/i&gt;)!&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:verdana;"&gt;,where &lt;i&gt;r&lt;/i&gt; &lt;= &lt;i&gt;n&lt;/i&gt;, &lt;i&gt;n&lt;/i&gt;! = &lt;i&gt;n*&lt;/i&gt;(&lt;i&gt;n-&lt;/i&gt;1)*...*3*2*1, and 0! = 1.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;It is not until &lt;i&gt;n&lt;/i&gt; = 23, that a value exceeds one-million: &lt;sup&gt;23&lt;/sup&gt;C&lt;sub&gt;10&lt;/sub&gt; = 1144066.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;How many, not necessarily distinct, values of &lt;sup&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sup&gt;C&lt;sub&gt;&lt;i&gt;r&lt;/i&gt;&lt;/sub&gt;, for 1 &lt;= &lt;i&gt;n&lt;/i&gt; &lt;= 100, are greater than one-million&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 153, 0);font-family:Verdana;" &gt;My first effort, using the &lt;a href="http://www.carljohansen.co.uk/bigint/BigInt.cs.txt"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;BigInt class&lt;/span&gt;&lt;/a&gt;, used 25 seconds so I found a much better way using Pascal's Triangle (of course):&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 153, 0);font-family:Verdana;" &gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;effort #1:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 53&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 22; i &amp;lt; 101; i++)&lt;br /&gt;         {&lt;br /&gt;             BigInt n = FactorialBigInt(i);&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;gt; 0; j--)&lt;br /&gt;             {&lt;br /&gt;                 BigInt r = FactorialBigInt(j);&lt;br /&gt;                 BigInt s = FactorialBigInt(i - j);&lt;br /&gt;                 BigInt result = n / (r * s);&lt;br /&gt;                 count += result &amp;gt; 1000000 ? 1 : 0;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(count);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; BigInt FactorialBigInt(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;     {&lt;br /&gt;         n = n == 0 ? 1 : n;&lt;br /&gt;         BigInt factorial = 1;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;         {&lt;br /&gt;             factorial *= i;&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; factorial;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;effort #2:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 53&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;         List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt; pascT = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt;();&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 101; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;int&lt;/span&gt;[] line=&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[i+1];&lt;br /&gt;             pascT.Add(line);&lt;br /&gt;         }&lt;br /&gt;         pascT[0][0] = 1;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; pascT.Count; i++)&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt;= i; j++)&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (j == 0  j == i)&lt;br /&gt;                     pascT[i][j] = 1;&lt;br /&gt;                 &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (pascT[i - 1][j] + pascT[i - 1][j - 1] &amp;gt;= 1000000)&lt;br /&gt;                 {&lt;br /&gt;                     pascT[i][j] = 1000000;&lt;br /&gt;                     count++;&lt;br /&gt;                 }&lt;br /&gt;                 &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                     pascT[i][j] = pascT[i - 1][j] + pascT[i - 1][j - 1];&lt;br /&gt;         Console.WriteLine(count);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3418115808517373053?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3418115808517373053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3418115808517373053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3418115808517373053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3418115808517373053'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-53.html' title='PROJECT EULER #53'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8773577559276837154</id><published>2009-04-17T12:17:00.004+02:00</published><updated>2009-05-01T19:00:44.073+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #52</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=52"&gt;Link to Project Euler problem 52&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It can be seen that the number, 125874, and its double, 251748, contain exactly the same digits, but in a different order.&lt;br /&gt;Find the smallest positive integer, x, such that 2x, 3x, 4x, 5x, and 6x, contain the same digits.&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 52&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;long&lt;/span&gt; i = 1, result = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;bool&lt;/span&gt; test = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (test)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (SameDigits(i,2*i)&amp;amp;&amp;amp;SameDigits(i,3*i)&amp;amp;&amp;amp;SameDigits(i,4*i)&amp;amp;&amp;amp;SameDigits(i,5*i)&amp;amp;&amp;amp;SameDigits(i,6*i))&lt;br /&gt;               {&lt;br /&gt;                   result = i;&lt;br /&gt;                   test = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;               }&lt;br /&gt;               i++;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(result);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; SameDigits(&lt;span class="kwrd"&gt;long&lt;/span&gt; n,&lt;span class="kwrd"&gt;long&lt;/span&gt; m)&lt;br /&gt;       {&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt; firstNumber = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;();&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt; secondNumber = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;char&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = n.ToString().ToCharArray();&lt;br /&gt;           &lt;span class="kwrd"&gt;char&lt;/span&gt;[] d = m.ToString().ToCharArray();&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (c.Length != d.Length)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var c1 &lt;span class="kwrd"&gt;in&lt;/span&gt; c)&lt;br /&gt;               firstNumber.Add(c1);&lt;br /&gt;           firstNumber.Sort();&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var d1 &lt;span class="kwrd"&gt;in&lt;/span&gt; d)&lt;br /&gt;               secondNumber.Add(d1);&lt;br /&gt;           secondNumber.Sort();&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; firstNumber.Count; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (firstNumber[i] != secondNumber[i])&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8773577559276837154?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8773577559276837154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8773577559276837154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8773577559276837154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8773577559276837154'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-52.html' title='PROJECT EULER #52'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-7589890100968441203</id><published>2009-04-17T11:58:00.003+02:00</published><updated>2009-04-17T12:13:06.415+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='Combinations'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #51</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=51"&gt;Link to Project Euler problem 51&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;By replacing the 1st digit of *57, it turns out that six of the possible values: 157, 257, 457, 557, 757, and 857, are all prime.&lt;br /&gt;By replacing the 3rd and 4th digits of 56**3 with the same digit, this 5-digit number is the first example having seven primes, yielding the family: 56003, 56113, 56333, 56443, 56663, 56773, and 56993. Consequently 56003, being the first member of this family, is the smallest prime with this property.&lt;br /&gt;Find the smallest prime which, by replacing part of the number (not necessarily adjacent digits) with the same digit, is part of an eight prime value family.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 51&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; number = &lt;span class="str"&gt;""&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;            List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GeneratePrimes(1000000);&lt;br /&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (primes[0] &amp;lt; 100000)&lt;br /&gt;                primes.Remove(primes[0]);&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; primes)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; s = i.ToString();&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; s.Length; j++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;char&lt;/span&gt; d = s[j];&lt;br /&gt;                    count = 0;&lt;br /&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 0; k &amp;lt; 10; k++)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;string&lt;/span&gt; t = s.Replace(d, &lt;span class="kwrd"&gt;char&lt;/span&gt;.Parse(k.ToString()));&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t)) &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(t) &amp;gt; 100000)&lt;br /&gt;                            count++;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (count &amp;gt; 7)&lt;br /&gt;                    {&lt;br /&gt;                        number = s;&lt;br /&gt;                        &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (count &amp;gt; 7)&lt;br /&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"the number {0} creates an 8 prime family"&lt;/span&gt;, number);&lt;br /&gt;            TimeSpan time = DateTime.Now - start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;        {&lt;br /&gt;            var primes = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                    primes.Add(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; primes;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color:#f6f6f6;"&gt;121313&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-7589890100968441203?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/7589890100968441203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=7589890100968441203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7589890100968441203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7589890100968441203'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-51.html' title='PROJECT EULER #51'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-7499162351163445131</id><published>2009-04-16T20:28:00.004+02:00</published><updated>2009-05-01T19:00:14.742+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #50</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=50"&gt;Link to Project Euler problem 50&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The prime 41, can be written as the sum of six consecutive primes:&lt;br /&gt;41 = 2 + 3 + 5 + 7 + 11 + 13&lt;br /&gt;This is the longest sum of consecutive primes that adds to a prime below one-hundred.&lt;br /&gt;The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.&lt;br /&gt;Which prime, below one-million, can be written as the sum of the most consecutive primes? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 50&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GeneratePrimes(1000000);&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0, total = 0, initial = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 5; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0, number = 0;&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;lt; primes.Count; j++)&lt;br /&gt;               {&lt;br /&gt;                   sum += primes[j];&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (sum &amp;gt; 1000000) &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                   number++;&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (primes.Contains(sum))&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (number &amp;gt; total)&lt;br /&gt;                       {&lt;br /&gt;                           total = number;&lt;br /&gt;                           max = sum;&lt;br /&gt;                           initial = primes[i];                                                     &lt;br /&gt;                       }&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"{0} steps from {1} give {2}"&lt;/span&gt;, total, initial, max);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           var primes = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                   primes.Add(i);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; primes;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-7499162351163445131?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/7499162351163445131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=7499162351163445131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7499162351163445131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7499162351163445131'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-50.html' title='PROJECT EULER #50'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3599442126965587564</id><published>2009-04-16T20:22:00.004+02:00</published><updated>2009-05-01T18:59:53.500+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #49</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=49"&gt;Link to Projrct Euler poblem 49&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;The arithmetic sequence, 1487, 4817, 8147, in which each of the terms increases by 3330, is unusual in two ways: (i) each of the three terms are prime, and, (ii) each of the 4-digit numbers are permutations of one another.&lt;br /&gt;There are no arithmetic sequences made up of three 1-, 2-, or 3-digit primes, exhibiting this property, but there is one other 4-digit increasing sequence.&lt;br /&gt;What 12-digit number do you form by concatenating the three terms in this sequence?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 49&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; primes = GeneratePrimes(10000);&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (primes[0] &amp;lt; 1000)&lt;br /&gt;               primes.Remove(primes[0]);&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; primes.Count; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = primes[i].ToString().ToCharArray();&lt;br /&gt;               Array.Sort(c);&lt;br /&gt;               &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i + 1; j &amp;lt; primes.Count; j++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;char&lt;/span&gt;[] d = primes[j].ToString().ToCharArray();&lt;br /&gt;                   Array.Sort(d);&lt;br /&gt;                   &lt;span class="kwrd"&gt;string&lt;/span&gt; t = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(d);&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (s == t)&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (primes.Contains(primes[i] + 2 * (primes[j] - primes[i])))&lt;br /&gt;                       {&lt;br /&gt;                           &lt;span class="kwrd"&gt;int&lt;/span&gt; third = primes[i] + 2 * (primes[j] - primes[i]);&lt;br /&gt;                           &lt;span class="kwrd"&gt;char&lt;/span&gt;[] e = third.ToString().ToCharArray();&lt;br /&gt;                           Array.Sort(e);&lt;br /&gt;                           &lt;span class="kwrd"&gt;string&lt;/span&gt; u = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(e);&lt;br /&gt;                           &lt;span class="kwrd"&gt;if&lt;/span&gt; (u == t &amp;amp;&amp;amp; u != &lt;span class="str"&gt;"1478"&lt;/span&gt;)&lt;br /&gt;                           {&lt;br /&gt;                               &lt;span class="kwrd"&gt;string&lt;/span&gt; result = primes[i].ToString() + primes[j] + third;&lt;br /&gt;                               Console.WriteLine(result);&lt;br /&gt;                           }&lt;br /&gt;                       }&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; GeneratePrimes(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           var primes = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { 2, 3 };&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 5; i &amp;lt;= n; i += 2)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(i))&lt;br /&gt;                   primes.Add(i);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; primes;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3599442126965587564?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3599442126965587564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3599442126965587564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3599442126965587564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3599442126965587564'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-49.html' title='PROJECT EULER #49'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2485567284939936589</id><published>2009-04-16T18:50:00.005+02:00</published><updated>2009-05-01T18:59:33.010+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #48</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=48"&gt;Link to Project Euler problem 48&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The series, 1&lt;sup&gt;1&lt;/sup&gt; + 2&lt;sup&gt;2&lt;/sup&gt; + 3&lt;sup&gt;3&lt;/sup&gt; + ... + 10&lt;sup&gt;10&lt;/sup&gt; = 10405071317.&lt;br /&gt;Find the last ten digits of the series, 1&lt;sup&gt;1&lt;/sup&gt; + 2&lt;sup&gt;2&lt;/sup&gt; + 3&lt;sup&gt;3&lt;/sup&gt; + ... + 1000&lt;sup&gt;1000&lt;/sup&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Keep doing the math and only keep the last 10 digits after every multiplication.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 48&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;long&lt;/span&gt; answer = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1001; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;long&lt;/span&gt; temp = i;&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt; i; j++)&lt;br /&gt;               {&lt;br /&gt;                   temp *= i;&lt;br /&gt;                   temp %= 10000000000;&lt;br /&gt;               }&lt;br /&gt;               answer += temp;&lt;br /&gt;               answer %= 10000000000;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(answer % 10000000000);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2485567284939936589?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2485567284939936589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2485567284939936589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2485567284939936589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2485567284939936589'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-48.html' title='PROJECT EULER #48'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1963603261486658223</id><published>2009-04-16T18:31:00.006+02:00</published><updated>2009-05-01T18:56:30.762+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #47</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=47"&gt;Link to Project Euler problem 47&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The first two consecutive numbers to have two distinct prime factors are:&lt;br /&gt;14 = 2 x 7 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;15 = 3 x 5&lt;br /&gt;The first three consecutive numbers to have three distinct prime factors are:&lt;br /&gt;644 = 2² x 7 x 23 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;645 = 3 x 5 x 43 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;646 = 2 x 17 x 19.&lt;br /&gt;Find the first four consecutive integers to have four distinct primes factors. What is the first of these numbers?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Took me some time to work this one out. The hard work is done by the method distinctPrimeFactors which divides the number by the smallest prime factor, then checks to see if it can divide it again by this number. It increments only if the prime divisor is a new number.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 47&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; startNumber = 644;&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (distinctPrimeFactors(startNumber)==4&amp;amp;&amp;amp;&lt;br /&gt;                   distinctPrimeFactors(startNumber+1)==4&amp;amp;&amp;amp;&lt;br /&gt;                   distinctPrimeFactors(startNumber+2)==4&amp;amp;&amp;amp;&lt;br /&gt;                   distinctPrimeFactors(startNumber+3)==4)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;               }&lt;br /&gt;               startNumber++;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(startNumber);&lt;br /&gt;&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; distinctPrimeFactors(&lt;span class="kwrd"&gt;int&lt;/span&gt; number)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; numFactors = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; prime = 2;&lt;br /&gt;           &lt;span class="kwrd"&gt;bool&lt;/span&gt; newPrime = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (!IsPrime(number))&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (number%prime == 0)&lt;br /&gt;               {&lt;br /&gt;                   number /= prime;&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (newPrime)&lt;br /&gt;                       numFactors++;&lt;br /&gt;                   newPrime = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;                       prime++; &lt;span class="kwrd"&gt;while&lt;/span&gt; (!IsPrime(prime));&lt;br /&gt;                   newPrime = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;               }&lt;br /&gt;           numFactors++;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; numFactors;&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;br /&gt;                   &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1963603261486658223?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1963603261486658223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1963603261486658223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1963603261486658223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1963603261486658223'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-47.html' title='PROJECT EULER #47'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2373113150929990659</id><published>2009-04-13T14:41:00.004+02:00</published><updated>2009-04-13T14:47:18.652+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #46</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=46"&gt;Link to Project Euler problem 46&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;It was proposed by Christian Goldbach that every odd composite number can be  written as the sum of a prime and twice a square.&lt;/p&gt; &lt;p style="margin-left: 10px;"&gt;9 = 7 + 2x1&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;15 = 7 + 2x2&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;21 = 3 +  2x3&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;25 = 7 +  2x3&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;27 = 19 +  2x2&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;33 = 31 +  2x1&lt;sup&gt;2&lt;/sup&gt;&lt;/p&gt; &lt;p&gt;It turns out that the conjecture was false.&lt;/p&gt; &lt;p&gt;What is the smallest odd composite that cannot be written as the sum of a  prime and twice a square?&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 46&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;bool&lt;/span&gt; test=&lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 3; i &amp;lt; 1000000; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsPrime(i) &amp;amp;&amp;amp; i % 2 != 0)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt;= i - 2; j += 2)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(j))&lt;br /&gt;                    {&lt;br /&gt;                        test = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;                        &lt;span class="kwrd"&gt;double&lt;/span&gt; k = i - j;&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (k % 2 == 0)&lt;br /&gt;                        {&lt;br /&gt;                            k = k / 2;&lt;br /&gt;                            &lt;span class="kwrd"&gt;if&lt;/span&gt; (Math.Sqrt(k) == Math.Floor(Math.Sqrt(k)))&lt;br /&gt;                            {&lt;br /&gt;                                test = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                                &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!test)&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(i);&lt;br /&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;5777&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2373113150929990659?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2373113150929990659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2373113150929990659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2373113150929990659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2373113150929990659'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-46.html' title='PROJECT EULER #46'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2469659165384941035</id><published>2009-04-13T12:51:00.006+02:00</published><updated>2009-05-01T18:55:56.768+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #45</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=45"&gt;Link to Project Euler problem 45&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;Triangle, pentagonal, and hexagonal numbers are generated by the following  formulae:&lt;/p&gt; &lt;table&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Triangle&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;T&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;=&lt;i&gt;n&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;+1)/2&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1, 3, 6, 10, 15, ...&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Pentagonal&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;P&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;=&lt;i&gt;n&lt;/i&gt;(3&lt;i&gt;n&lt;/i&gt;-1)/2&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1, 5, 12, 22, 35, ...&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Hexagonal&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;H&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;=&lt;i&gt;n&lt;/i&gt;(2&lt;i&gt;n&lt;/i&gt;-1)&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;1, 6, 15, 28, 45, ...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;It can be verified that T&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;285&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; = P&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;165&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; = H&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;143&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; = 40755.&lt;/p&gt; &lt;p&gt;Find the next triangle number that is also pentagonal and  hexagonal.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt; {&lt;br /&gt;     &lt;span class="rem"&gt;//Problem 45&lt;/span&gt;&lt;br /&gt;     DateTime start = DateTime.Now;&lt;br /&gt;     &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; i = 1; i &amp;lt; 1000000; i++)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="kwrd"&gt;double&lt;/span&gt; triangle = i/2*(i + 1);&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; j = 1; j &amp;lt;= i; j++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;double&lt;/span&gt; pentagonal = j/2*(3*j - 1);&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (triangle == pentagonal)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; k = 1; k &amp;lt;= j; k++)&lt;br /&gt;                 {&lt;br /&gt;                     &lt;span class="kwrd"&gt;double&lt;/span&gt; hexagonal = k*(2*k - 1);&lt;br /&gt;                     &lt;span class="kwrd"&gt;if&lt;/span&gt; ( triangle==hexagonal&amp;amp;&amp;amp;triangle&amp;gt;40755)&lt;br /&gt;                     {&lt;br /&gt;                         Console.WriteLine(triangle +&lt;span class="str"&gt;" "&lt;/span&gt;+ pentagonal +&lt;span class="str"&gt;" "&lt;/span&gt;+ hexagonal);&lt;br /&gt;                         TimeSpan time = DateTime.Now - start;&lt;br /&gt;                         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;                         Console.ReadKey();&lt;br /&gt;                     }&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2469659165384941035?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2469659165384941035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2469659165384941035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2469659165384941035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2469659165384941035'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-45.html' title='PROJECT EULER #45'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3105566596899359240</id><published>2009-04-13T12:44:00.006+02:00</published><updated>2009-05-01T18:55:33.998+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #44</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=44"&gt;Link to Project Euler problem 44&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;Pentagonal numbers are generated by the formula, P&lt;sub&gt;&lt;var&gt;n&lt;/var&gt;&lt;/sub&gt;=&lt;var&gt;n&lt;/var&gt;(3&lt;var&gt;n&lt;/var&gt;-1)/2. The first ten  pentagonal numbers are:&lt;/p&gt; &lt;p style="text-align: center;"&gt;1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...&lt;/p&gt; &lt;p&gt;It can be seen that P&lt;sub&gt;4&lt;/sub&gt; + P&lt;sub&gt;7&lt;/sub&gt; = 22 + 70 = 92 = P&lt;sub&gt;8&lt;/sub&gt;. However, their  difference, 70 - 22 = 48, is not pentagonal.&lt;/p&gt; &lt;p&gt;Find the pair of pentagonal numbers, P&lt;sub&gt;&lt;var&gt;j&lt;/var&gt;&lt;/sub&gt; and P&lt;sub&gt;&lt;var&gt;k&lt;/var&gt;&lt;/sub&gt;, for which their sum and difference is  pentagonal and D = |P&lt;sub&gt;&lt;var&gt;k&lt;/var&gt;&lt;/sub&gt; - P&lt;sub&gt;&lt;var&gt;j&lt;/var&gt;&lt;/sub&gt;| is  minimised; what is the value of D?&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt; {&lt;br /&gt;     &lt;span class="rem"&gt;//Problem 44&lt;/span&gt;&lt;br /&gt;     DateTime start = DateTime.Now;&lt;br /&gt;     &lt;span class="kwrd"&gt;int&lt;/span&gt; diff;&lt;br /&gt;     &lt;span class="kwrd"&gt;double&lt;/span&gt; n;&lt;br /&gt;     List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; pent = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(10000);&lt;br /&gt;     &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10000; i++)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//add pentagonals to list&lt;/span&gt;&lt;br /&gt;         pent.Add((i+1)*(3*(i+1) - 1)/2);&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; i; j++)&lt;br /&gt;         {&lt;br /&gt;             diff = pent[i] - pent[j];&lt;br /&gt;             &lt;span class="rem"&gt;//check if diff is pentagonal&lt;/span&gt;&lt;br /&gt;             n = (Math.Sqrt(24*diff + 1) + 1)/6;&lt;br /&gt;             &lt;span class="rem"&gt;//if n is an integer&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == Math.Floor(n))&lt;br /&gt;             {&lt;br /&gt;                 n = (Math.Sqrt(24*(diff + pent[i]) + 1) + 1)/6;&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == Math.Floor(n))&lt;br /&gt;                     Console.WriteLine(pent[j]);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;     TimeSpan time = DateTime.Now - start;&lt;br /&gt;     Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;     Console.ReadKey();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3105566596899359240?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3105566596899359240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3105566596899359240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3105566596899359240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3105566596899359240'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-44.html' title='PROJECT EULER #44'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2239937159259527079</id><published>2009-04-13T09:49:00.008+02:00</published><updated>2009-05-01T18:55:12.847+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #43</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=43"&gt;Link to Project Euler problem 43&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;The number, 1406357289, is a 0 to 9 pandigital number because it is made up  of each of the digits 0 to 9 in some order, but it also has a rather interesting  sub-string divisibility property.&lt;/p&gt; &lt;p&gt;Let &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;1&lt;/sub&gt; be the 1&lt;sup&gt;st&lt;/sup&gt; digit, &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;2&lt;/sub&gt; be the 2&lt;sup&gt;nd&lt;/sup&gt; digit, and so on. In this way, we note the  following:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;3&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;4&lt;/sub&gt;=406 is divisible by 2  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;3&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;4&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;5&lt;/sub&gt;=063 is divisible by 3  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;4&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;5&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;6&lt;/sub&gt;=635 is divisible by 5  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;5&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;6&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;7&lt;/sub&gt;=357 is divisible by 7  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;6&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;7&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;8&lt;/sub&gt;=572 is divisible by 11  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;7&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;8&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;9&lt;/sub&gt;=728 is divisible by 13  &lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;8&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;9&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;10&lt;/sub&gt;=289 is divisible by 17 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Find the sum of all 0 to 9 pandigital numbers with this property.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 153, 0);"&gt;The clue here was to find &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;8&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;9&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;10&lt;/sub&gt; first as there are only 58 multiples of 17 under 1000, then to remove these digits from the List. The next digit is added and we check if &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;7&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;8&lt;/sub&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;9&lt;/sub&gt; is divisible by 13. If so, remove this digit from the list. The next digit is added etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;As we step back up the for-loops we put the digits back into the list. When there are only two digits left, both will produce &lt;/span&gt;&lt;i style="color: rgb(0, 153, 0);"&gt;d&lt;/i&gt;&lt;sub style="color: rgb(0, 153, 0);"&gt;2&lt;/sub&gt;&lt;i style="color: rgb(0, 153, 0);"&gt;d&lt;/i&gt;&lt;sub style="color: rgb(0, 153, 0);"&gt;3&lt;/sub&gt;&lt;i style="color: rgb(0, 153, 0);"&gt;d&lt;/i&gt;&lt;sub style="color: rgb(0, 153, 0);"&gt;4&lt;/sub&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; divisible by 2. Numbers with a leading zero (&lt;/span&gt;&lt;i style="color: rgb(0, 153, 0);"&gt;d&lt;/i&gt;&lt;sub style="color: rgb(0, 153, 0);"&gt;1&lt;/sub&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; = 0) are excluded.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;{&lt;br /&gt;    &lt;span class="rem"&gt;//Problem 43&lt;/span&gt;&lt;br /&gt;    DateTime start = DateTime.Now;&lt;br /&gt;    &lt;span class="kwrd"&gt;long&lt;/span&gt; sum = 0;&lt;br /&gt;    &lt;span class="rem"&gt;//find numbers divisible by 17&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 17; i &amp;lt; 1000; i += 17)&lt;br /&gt;    {&lt;br /&gt;        List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; test = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; { &lt;span class="str"&gt;"0"&lt;/span&gt;, &lt;span class="str"&gt;"1"&lt;/span&gt;, &lt;span class="str"&gt;"2"&lt;/span&gt;, &lt;span class="str"&gt;"3"&lt;/span&gt;, &lt;span class="str"&gt;"4"&lt;/span&gt;, &lt;span class="str"&gt;"5"&lt;/span&gt;, &lt;span class="str"&gt;"6"&lt;/span&gt;, &lt;span class="str"&gt;"7"&lt;/span&gt;, &lt;span class="str"&gt;"8"&lt;/span&gt;, &lt;span class="str"&gt;"9"&lt;/span&gt; };&lt;br /&gt;        &lt;span class="rem"&gt;//Add leading zero if &amp;lt; 100&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; ia = i &amp;lt; 100 ? &lt;span class="str"&gt;"0"&lt;/span&gt; + i : i.ToString();&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//Check uniqueness&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (ia[0] != ia[1] &amp;amp;&amp;amp; ia[0] != ia[2] &amp;amp;&amp;amp; ia[1] != ia[2])&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//remove from list&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; 3; j++)&lt;br /&gt;                test.Remove(ia[j].ToString());&lt;span class="rem"&gt;//7 left&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; test.Count; j++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; js = test[j];&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(js + ia[0] + ia[1]) % 13 == 0)&lt;br /&gt;                {&lt;br /&gt;                    test.Remove(js);&lt;span class="rem"&gt;//6 left&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = 0; k &amp;lt; test.Count; k++)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;string&lt;/span&gt; ks = test[k];&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ks + js + ia[0]) % 11 == 0)&lt;br /&gt;                        {&lt;br /&gt;                            test.Remove(ks);&lt;span class="rem"&gt;//5 left&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; l = 0; l &amp;lt; test.Count; l++)&lt;br /&gt;                            {&lt;br /&gt;                                &lt;span class="kwrd"&gt;string&lt;/span&gt; ls = test[l];&lt;br /&gt;                                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ls + ks + js) % 7 == 0)&lt;br /&gt;                                {&lt;br /&gt;                                    test.Remove(ls);&lt;span class="rem"&gt;//4 left&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; m = 0; m &amp;lt; test.Count; m++)&lt;br /&gt;                                    {&lt;br /&gt;                                        &lt;span class="kwrd"&gt;string&lt;/span&gt; ms = test[m];&lt;br /&gt;                                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ms + ls + ks) % 5 == 0)&lt;br /&gt;                                        {&lt;br /&gt;                                            test.Remove(ms);&lt;span class="rem"&gt;//3 left&lt;/span&gt;&lt;br /&gt;                                            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; n = 0; n &amp;lt; test.Count; n++)&lt;br /&gt;                                            {&lt;br /&gt;                                                &lt;span class="kwrd"&gt;string&lt;/span&gt; ns = test[n];&lt;br /&gt;                                                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ns + ms + ls) % 3 == 0)&lt;br /&gt;                                                {&lt;br /&gt;                                                    test.Remove(ns);&lt;span class="rem"&gt;//2 left&lt;/span&gt;&lt;br /&gt;                                                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ms) % 2 ==0)&lt;br /&gt;                                                        {&lt;br /&gt;                                                            sum += &lt;span class="kwrd"&gt;long&lt;/span&gt;.Parse(test[1] + test[0] + ns + ms + ls + ks + js + ia);&lt;br /&gt;                                                            &lt;span class="kwrd"&gt;if&lt;/span&gt; (test[0]!=&lt;span class="str"&gt;"0"&lt;/span&gt;)&lt;br /&gt;                                                            {&lt;br /&gt;                                                                sum += &lt;span class="kwrd"&gt;long&lt;/span&gt;.Parse(test[0] + test[1] + ns + ms + ls + ks + js + ia);&lt;br /&gt;                                                            }&lt;br /&gt;                                                        }&lt;br /&gt;                                                    test.Add(ns);&lt;br /&gt;                                                    test.Sort();&lt;br /&gt;                                                }&lt;br /&gt;                                            }&lt;br /&gt;                                            test.Add(ms);&lt;br /&gt;                                            test.Sort();&lt;br /&gt;                                        }&lt;br /&gt;                                    }&lt;br /&gt;                                    test.Add(ls);&lt;br /&gt;                                    test.Sort();&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                            test.Add(ks);&lt;br /&gt;                            test.Sort();&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    test.Add(js);&lt;br /&gt;                    test.Sort();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    Console.WriteLine(sum);&lt;br /&gt;    TimeSpan time = DateTime.Now - start;&lt;br /&gt;    Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;    Console.ReadKey();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2239937159259527079?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2239937159259527079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2239937159259527079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2239937159259527079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2239937159259527079'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-43.html' title='PROJECT EULER #43'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3024924755802901317</id><published>2009-04-12T21:12:00.005+02:00</published><updated>2009-05-01T18:54:31.602+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #42</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=42"&gt;Link to Project Euler problem 42&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;The &lt;i&gt;n&lt;/i&gt;&lt;sup&gt;th&lt;/sup&gt; term of the sequence of triangle numbers is  given by, &lt;i&gt;t&lt;sub&gt;n&lt;/sub&gt;&lt;/i&gt; = ½&lt;i&gt;n&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;+1); so the first  ten triangle numbers are:&lt;/p&gt; &lt;p style="text-align: center;"&gt;1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...&lt;/p&gt; &lt;p&gt;By converting each letter in a word to a number corresponding to its  alphabetical position and adding these values we form a word value. For example,  the word value for SKY is 19 + 11 + 25 = 55 = &lt;i&gt;t&lt;/i&gt;&lt;sub&gt;10&lt;/sub&gt;. If the word  value is a triangle number then we shall call the word a triangle word.&lt;/p&gt; &lt;p&gt;Using &lt;a href="http://projecteuler.net/project/words.txt"&gt;words.txt&lt;/a&gt; (right click and 'Save  Link/Target As...'), a 16K text file containing nearly two-thousand common  English words, how many are triangle words?&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 42&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../words.txt"&lt;/span&gt;);&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sr.ReadToEnd().ToUpper();&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt;[] sa = s.Split(&lt;span class="str"&gt;','&lt;/span&gt;);&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; tWords = 0;&lt;br /&gt;       &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s1 &lt;span class="kwrd"&gt;in&lt;/span&gt; sa)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;string&lt;/span&gt; s2 = s1.Substring(1, s1.Length - 2);&lt;br /&gt;           s2.ToCharArray();&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c &lt;span class="kwrd"&gt;in&lt;/span&gt; s2)&lt;br /&gt;           {&lt;br /&gt;               sum += c - 64;&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; j = 0; j &amp;lt; 25; j++)&lt;br /&gt;           {&lt;br /&gt;               tWords += j/2*(j + 1) == sum ? 1 : 0;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       Console.WriteLine(tWords);&lt;br /&gt;       TimeSpan time = DateTime.Now-start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3024924755802901317?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3024924755802901317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3024924755802901317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3024924755802901317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3024924755802901317'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-42.html' title='PROJECT EULER #42'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2414085808624098806</id><published>2009-04-12T21:03:00.006+02:00</published><updated>2009-05-01T18:52:23.815+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #41</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=41"&gt;Link to Project Euler problem 41&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;We shall say that an &lt;i&gt;n&lt;/i&gt;-digit number is pandigital if it makes use of  all the digits 1 to &lt;i&gt;n&lt;/i&gt; exactly once. For example, 2143 is a 4-digit  pandigital and is also prime.&lt;/p&gt; &lt;p&gt;What is the largest &lt;i&gt;n&lt;/i&gt;-digit pandigital prime that exists?&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;I can rule out 9 and 8 digit pandigitals because the sum of the digits is divisible by 9 which means they are not prime&lt;/span&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 41&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; test = &lt;span class="str"&gt;"1234567"&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 3; i &amp;lt; 7654321; i += 2)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;string&lt;/span&gt; s = i.ToString();&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (!s.Contains(&lt;span class="str"&gt;"0"&lt;/span&gt;)||!s.EndsWith(&lt;span class="str"&gt;"5"&lt;/span&gt;))&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = s.ToCharArray();&lt;br /&gt;               Array.Sort(c);&lt;br /&gt;               &lt;span class="kwrd"&gt;string&lt;/span&gt; t = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (t == test.Substring(0, t.Length))&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s)))&lt;br /&gt;                       max = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s) &amp;gt; max&lt;br /&gt;                                 ? &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s)&lt;br /&gt;                                 : max;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       Console.WriteLine(max);&lt;br /&gt;       TimeSpan time = DateTime.Now - start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2414085808624098806?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2414085808624098806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2414085808624098806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2414085808624098806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2414085808624098806'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-41.html' title='PROJECT EULER #41'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2866246807361410439</id><published>2009-04-12T17:47:00.006+02:00</published><updated>2009-05-01T18:51:42.788+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #40</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=40"&gt;Link to Project Euler problem 40&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;An irrational decimal fraction is created by concatenating the positive  integers:&lt;/p&gt; &lt;p style="text-align: center;"&gt;0.12345678910&lt;span style="color: rgb(221, 0, 0);"&gt;1&lt;/span&gt;112131415161718192021...&lt;/p&gt; &lt;p&gt;It can be seen that the 12&lt;sup&gt;th&lt;/sup&gt; digit of the  fractional part is 1.&lt;/p&gt; &lt;p&gt;If &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt; represents the &lt;i&gt;n&lt;/i&gt;&lt;sup&gt;th&lt;/sup&gt; digit of the fractional part, find the value of the following  expression.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;i&gt;d&lt;/i&gt;&lt;sub&gt;1&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;10&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;100&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;1000&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;10000&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;100000&lt;/sub&gt; x &lt;i&gt;d&lt;/i&gt;&lt;sub&gt;1000000&lt;/sub&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="rem"&gt;//Problem 40&lt;/span&gt;&lt;br /&gt;      DateTime start = DateTime.Now;&lt;br /&gt;      StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br /&gt;      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 200000; i++)&lt;br /&gt;              sb.Append(i.ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sb.ToString();&lt;br /&gt;      &lt;span class="kwrd"&gt;long&lt;/span&gt; sum = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[0].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[9].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[99].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[999].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[9999].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[99999].ToString())*&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[999999].ToString());&lt;br /&gt;      Console.WriteLine(sum);&lt;br /&gt;      TimeSpan time = DateTime.Now - start;&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;      Console.ReadKey();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2866246807361410439?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2866246807361410439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2866246807361410439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2866246807361410439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2866246807361410439'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/p.html' title='PROJECT EULER #40'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1669266340143803353</id><published>2009-04-12T17:38:00.004+02:00</published><updated>2009-05-01T18:51:06.069+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #39</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=39"&gt;Link to Project Euler problem 39&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;If &lt;i&gt;p&lt;/i&gt; is the perimeter of a right angle triangle with integral length  sides, {&lt;i&gt;a&lt;/i&gt;,&lt;i&gt;b&lt;/i&gt;,&lt;i&gt;c&lt;/i&gt;}, there are exactly three solutions for  &lt;i&gt;p&lt;/i&gt; = 120.&lt;/p&gt; &lt;p style="text-align: center;"&gt;{20,48,52}, {24,45,51}, {30,40,50}&lt;/p&gt; &lt;p&gt;For which value of &lt;i&gt;p&lt;/i&gt; &lt;= 1000, is the number of  solutions maximised? &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="rem"&gt;//Problem 39&lt;/span&gt;&lt;br /&gt;          DateTime start = DateTime.Now;&lt;br /&gt;          &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0,number=0;&lt;br /&gt;          Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; score=&lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1000; i &amp;gt; 0; i--)&lt;br /&gt;              &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i - 1; j &amp;gt; 0; j--)&lt;br /&gt;                  &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; k = j; k &amp;gt; 0; k--)&lt;br /&gt;                      &lt;span class="kwrd"&gt;if&lt;/span&gt; ((k*k + j*j) == (i*i))&lt;br /&gt;                          &lt;span class="kwrd"&gt;if&lt;/span&gt; (i + j + k &amp;lt;= 1000)&lt;br /&gt;                              &lt;span class="kwrd"&gt;if&lt;/span&gt; (score.ContainsKey(i + j + k))&lt;br /&gt;                                  score[i + j + k] += 1;&lt;br /&gt;                              &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                                  score.Add(i + j + k, 1);&lt;br /&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; pair &lt;span class="kwrd"&gt;in&lt;/span&gt; score)&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (pair.Value &amp;gt; max)&lt;br /&gt;              {&lt;br /&gt;                  max = pair.Value;&lt;br /&gt;                  number = pair.Key;&lt;br /&gt;              }&lt;br /&gt;          Console.WriteLine(number);&lt;br /&gt;          TimeSpan time = DateTime.Now - start;&lt;br /&gt;          Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;          Console.ReadKey();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1669266340143803353?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1669266340143803353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1669266340143803353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1669266340143803353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1669266340143803353'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-39.html' title='PROJECT EULER #39'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2933708628841435360</id><published>2009-04-12T17:32:00.004+02:00</published><updated>2009-05-01T18:50:16.174+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #38</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=38"&gt;Link to Project Euler problem 38&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;Take the number 192 and multiply it by each of 1, 2, and 3:&lt;/p&gt; &lt;blockquote&gt;192 x 1 = 192&lt;br /&gt;192 x 2 = 384&lt;br /&gt;192 x 3 = 576&lt;/blockquote&gt; &lt;p&gt;By concatenating each product we get the 1 to 9 pandigital, 192384576. We  will call 192384576 the concatenated product of 192 and (1,2,3)&lt;/p&gt; &lt;p&gt;The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4,  and 5, giving the pandigital, 918273645, which is the concatenated product of 9  and (1,2,3,4,5).&lt;/p&gt; &lt;p&gt;What is the largest 1 to 9 pandigital 9-digit number that can be formed as  the concatenated product of an integer with (1,2, ... , &lt;var&gt;n&lt;/var&gt;) where  &lt;var&gt;n&lt;/var&gt; &gt; 1?&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 37&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; test = &lt;span class="str"&gt;"123456789"&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;long&lt;/span&gt; max = 0;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 10000; i++)&lt;br /&gt;        {&lt;br /&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt; 10; j++)&lt;br /&gt;            {&lt;br /&gt;                sb.Append(i*j);&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (sb.Length == 9)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;string&lt;/span&gt; result = sb.ToString();&lt;br /&gt;                    &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = result.ToCharArray();&lt;br /&gt;                    Array.Sort(c);&lt;br /&gt;                    &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (s == test)&lt;br /&gt;                        max = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(result) &amp;gt; max&lt;br /&gt;                                  ? &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(result)&lt;br /&gt;                                  : max;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        Console.WriteLine(max);&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2933708628841435360?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2933708628841435360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2933708628841435360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2933708628841435360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2933708628841435360'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-38.html' title='PROJECT EULER #38'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-7866219692134787838</id><published>2009-04-12T16:56:00.003+02:00</published><updated>2009-05-01T18:49:37.994+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Primes'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #37</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=37"&gt;Link to Project Euler problem 37&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;The number 3797 has an interesting property. Being prime itself, it is  possible to continuously remove digits from left to right, and remain prime at  each stage: 3797, 797, 97, and 7. Similarly we can work from right to left:  3797, 379, 37, and 3.&lt;/p&gt; &lt;p&gt;Find the sum of the only eleven primes that are both truncatable from left to  right and right to left.&lt;/p&gt; &lt;p class="info"&gt;NOTE: 2, 3, 5, and 7 are not considered to be truncatable  primes.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 37&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 9; i &amp;lt; 1000000; i+=2)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; s = i.ToString();&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!s.Contains(&lt;span class="str"&gt;"0"&lt;/span&gt;) || !s.Contains(&lt;span class="str"&gt;"4"&lt;/span&gt;) || !s.Contains(&lt;span class="str"&gt;"6"&lt;/span&gt;) || !s.Contains(&lt;span class="str"&gt;"8"&lt;/span&gt;))&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;bool&lt;/span&gt; test = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; s.Length; j++)&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s.Substring(j, s.Length - j))) || !IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s.Substring(0, j + 1))))&lt;br /&gt;                        test = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (test)&lt;br /&gt;                    sum += i;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        Console.WriteLine(sum);&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="rem"&gt;//test if prime&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n % i == 0)&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-7866219692134787838?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/7866219692134787838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=7866219692134787838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7866219692134787838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7866219692134787838'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-37.html' title='PROJECT EULER #37'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-4741935190478083494</id><published>2009-04-12T16:15:00.002+02:00</published><updated>2009-05-01T18:48:39.272+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Palindromes'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #36</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=36"&gt;Link to Project Euler problem 36&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;The decimal number, 585 = 1001001001&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; (binary), is  palindromic in both bases.&lt;/p&gt; &lt;p&gt;Find the sum of all numbers, less than one million, which are palindromic in  base 10 and base 2.&lt;/p&gt; &lt;p class="info"&gt;(Please note that the palindromic number, in either base, may not  include leading zeros.)&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 36&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1000000; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt;(IsPalindrome(i.ToString()))&lt;br /&gt;             {&lt;br /&gt;                 sum += IsPalindrome(ToBinary(i))&lt;br /&gt;                            ? i&lt;br /&gt;                            : 0;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(sum);&lt;br /&gt;         TimeSpan time = DateTime.Now-start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToBinary(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;     {&lt;br /&gt;         var number = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; rem;&lt;br /&gt;         &lt;span class="kwrd"&gt;while&lt;/span&gt;(n!=0)&lt;br /&gt;         {&lt;br /&gt;             n=Math.DivRem(n, 2, &lt;span class="kwrd"&gt;out&lt;/span&gt; rem);&lt;br /&gt;             &lt;span class="kwrd"&gt;switch&lt;/span&gt; (rem)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; 0:&lt;br /&gt;                     number.Append(0);&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;case&lt;/span&gt; 1:&lt;br /&gt;                     number.Append(1);&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 &lt;span class="kwrd"&gt;default&lt;/span&gt;:&lt;br /&gt;                     &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         var c = number.ToString().ToCharArray();&lt;br /&gt;         Array.Reverse(c);&lt;br /&gt;         &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(c);&lt;br /&gt;         &lt;span class="kwrd"&gt;while&lt;/span&gt; (s.StartsWith(&lt;span class="str"&gt;"0"&lt;/span&gt;))&lt;br /&gt;         {&lt;br /&gt;             s.Remove(0, 1);&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; s;&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPalindrome (&lt;span class="kwrd"&gt;string&lt;/span&gt; s)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="kwrd"&gt;char&lt;/span&gt;[] q = s.ToCharArray();&lt;br /&gt;         Array.Reverse(q);&lt;br /&gt;         &lt;span class="kwrd"&gt;string&lt;/span&gt; r = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(q);&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (s.Equals(r))&lt;br /&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-4741935190478083494?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/4741935190478083494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=4741935190478083494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4741935190478083494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4741935190478083494'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-36.html' title='PROJECT EULER #36'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-4803731649160726130</id><published>2009-04-12T16:09:00.004+02:00</published><updated>2009-05-01T18:47:57.030+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #35</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=35"&gt;Link to Project Euler problem 35&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana;" class="problem_content"&gt; &lt;p&gt;The number, 197, is called a circular prime because all rotations of the  digits: 197, 971, and 719, are themselves prime.&lt;/p&gt; &lt;p&gt;There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71,  73, 79, and 97.&lt;/p&gt; &lt;p&gt;How many circular primes are there below one million?&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="rem"&gt;//Problem 35&lt;/span&gt;&lt;br /&gt;       DateTime start = DateTime.Now;&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; result = 0;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 1000000; i++)&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsCircularPrime(i))&lt;br /&gt;               result ++;&lt;br /&gt;       Console.WriteLine( result );&lt;br /&gt;       TimeSpan time = DateTime.Now - start;&lt;br /&gt;       Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;       Console.ReadKey();&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="rem"&gt;//check if number is circular prime&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsCircularPrime( &lt;span class="kwrd"&gt;int&lt;/span&gt; number )&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsPrime(number))&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt; s = number.ToString();&lt;br /&gt;       &lt;span class="rem"&gt;//if the numbers 2,4,6,8,0 or 5 are in there it can't be a circular prime.&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; ch &lt;span class="kwrd"&gt;in&lt;/span&gt; s)&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (number != 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt;(number!=5)&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(ch.ToString())%2 == 0 || ch == &lt;span class="str"&gt;'5'&lt;/span&gt;)&lt;br /&gt;                       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt;[] c = CircularCombinations( s );&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt;( &lt;span class="kwrd"&gt;int&lt;/span&gt; i=0; i&amp;lt;c.Length; i++ )&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; n = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse( c[i] );&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsPrime(n))&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="rem"&gt;//Make the combinations&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] CircularCombinations(&lt;span class="kwrd"&gt;string&lt;/span&gt; number)&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;string&lt;/span&gt;[] c = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[number.Length];&lt;br /&gt;       c[0] = number;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; c.Length; i++)&lt;br /&gt;           c[i] = number.Substring(i, c.Length - i) + number.Substring(0, i);&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; c;&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="rem"&gt;//test if prime&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n%i == 0)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-4803731649160726130?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/4803731649160726130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=4803731649160726130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4803731649160726130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/4803731649160726130'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-35.html' title='PROJECT EULER #35'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5732381638374276419</id><published>2009-04-12T16:04:00.004+02:00</published><updated>2009-05-01T18:47:18.061+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Factorials'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #34</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=34"&gt;Link to Project Euler problem 34&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt; &lt;p style="font-family: verdana;"&gt;145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;Find the sum of all numbers which are equal to the sum of the factorial of  their digits.&lt;/p&gt; &lt;p class="info"&gt;Note: as 1! = 1 and 2! = 2 are not sums they are not  included.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 34&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;long&lt;/span&gt; total = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 3; i &amp;lt; 50000; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;long&lt;/span&gt; sum = 0;&lt;br /&gt;             &lt;span class="kwrd"&gt;string&lt;/span&gt; s = i.ToString();&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; s.Length; j++)&lt;br /&gt;                 sum += Factorial(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s[j].ToString()));&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (sum == i)&lt;br /&gt;                 total += sum;&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(total);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Factorial(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; number = n;&lt;br /&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 0) &lt;span class="kwrd"&gt;return&lt;/span&gt; 1;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; n; i++)&lt;br /&gt;             number *= i;&lt;br /&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; number;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5732381638374276419?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5732381638374276419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5732381638374276419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5732381638374276419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5732381638374276419'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-34.html' title='PROJECT EULER #34'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-2318566224327216604</id><published>2009-04-12T15:57:00.004+02:00</published><updated>2009-05-01T18:46:24.868+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #33</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=33"&gt;Link to Project Euler problem 33&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;span style="font-family:verdana;"&gt; &lt;p&gt;The fraction &lt;img style="display: none;" alt="^(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sup&gt;49&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;/&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;98&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; is a curious  fraction, as an inexperienced mathematician in attempting to simplify it may  incorrectly believe that &lt;img style="display: none;" alt="^(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sup&gt;49&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;/&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;98&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; = &lt;img style="display: none;" alt="^(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;/&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;8&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;, which is correct,  is obtained by cancelling the 9s.&lt;/p&gt; &lt;p&gt;We shall consider fractions like, &lt;img style="display: none;" alt="^(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sup&gt;30&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;/&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;50&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt; = &lt;img style="display: none;" alt="^(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;/&lt;img style="display: none;" alt="_(" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;&lt;sub&gt;5&lt;/sub&gt;&lt;img style="display: none;" alt=")" src="http://www.blogger.com/post-create.g?blogID=626187215596311778" /&gt;, to be trivial  examples.&lt;/p&gt; &lt;p&gt;There are exactly four non-trivial examples of this type of fraction, less  than one in value, and containing two digits in the numerator and  denominator.&lt;/p&gt; &lt;p&gt;If the product of these four fractions is given in its lowest common terms,  find the value of the denominator.&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt; &lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 33&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         &lt;span class="kwrd"&gt;double&lt;/span&gt; numerator = 1, denominator = 1;&lt;br /&gt;         &lt;span class="kwrd"&gt;double&lt;/span&gt; temp1=0,temp2=0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; i = 10; i &amp;lt; 100; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;string&lt;/span&gt; a = i.ToString();&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt; j = i+1; j &amp;lt; 100; j++)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;string&lt;/span&gt; b = j.ToString();&lt;br /&gt;             &lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (a[0] == b[1] &amp;amp;&amp;amp; b[0] != &lt;span class="str"&gt;'0'&lt;/span&gt;&amp;amp;&amp;amp; a[1]!=&lt;span class="str"&gt;'0'&lt;/span&gt;)&lt;br /&gt;                 {&lt;br /&gt;                     temp1 = &lt;span class="kwrd"&gt;double&lt;/span&gt;.Parse(a[1].ToString())/&lt;span class="kwrd"&gt;double&lt;/span&gt;.Parse(b[0].ToString());&lt;br /&gt;                     &lt;span class="kwrd"&gt;if&lt;/span&gt; (temp1==i/j)&lt;br /&gt;                     {&lt;br /&gt;                         numerator *= i;&lt;br /&gt;                         denominator *= j;&lt;br /&gt;                     }&lt;br /&gt;                 }&lt;br /&gt;                 &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (a[1] == b[0] &amp;amp;&amp;amp; b[1] != &lt;span class="str"&gt;'0'&lt;/span&gt; &amp;amp;&amp;amp; a[0]!=&lt;span class="str"&gt;'0'&lt;/span&gt;)&lt;br /&gt;                 {&lt;br /&gt;                     temp2 = &lt;span class="kwrd"&gt;double&lt;/span&gt;.Parse(a[0].ToString())/&lt;span class="kwrd"&gt;double&lt;/span&gt;.Parse(b[1].ToString());&lt;br /&gt;                     &lt;span class="kwrd"&gt;if&lt;/span&gt; (temp2==i/j)&lt;br /&gt;                     {&lt;br /&gt;                         numerator *= i;&lt;br /&gt;                         denominator *= j;&lt;br /&gt;                     }&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;bool&lt;/span&gt; test = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;         &lt;span class="kwrd"&gt;while&lt;/span&gt;(test)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= numerator; i++)&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (numerator%i == 0 &amp;amp;&amp;amp; denominator%i == 0)&lt;br /&gt;                 {&lt;br /&gt;                     numerator /= i;&lt;br /&gt;                     denominator /= i;&lt;br /&gt;                 }&lt;br /&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (denominator%numerator != 0 || numerator == 1)&lt;br /&gt;                 test = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(denominator);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-2318566224327216604?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/2318566224327216604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=2318566224327216604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2318566224327216604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/2318566224327216604'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-33.html' title='PROJECT EULER #33'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8898296938072421807</id><published>2009-04-12T14:55:00.006+02:00</published><updated>2009-05-01T18:45:36.500+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #32</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=32"&gt;Link to Project Euler problem 32&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The product 7254 is unusual, as the identity, 39  x 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.&lt;/span&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;     {&lt;br /&gt;         &lt;span class="rem"&gt;//Problem 55&lt;/span&gt;&lt;br /&gt;         DateTime start = DateTime.Now;&lt;br /&gt;         List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; products = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;         &lt;span class="kwrd"&gt;string&lt;/span&gt; test = &lt;span class="str"&gt;"123456789"&lt;/span&gt;;&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; product = 0;&lt;br /&gt;         &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 2000; i++)&lt;br /&gt;         {&lt;br /&gt;             &lt;span class="kwrd"&gt;string&lt;/span&gt; c = i.ToString();&lt;br /&gt;             &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt; 50; j++)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span class="kwrd"&gt;int&lt;/span&gt; temp = i * j;&lt;br /&gt;                 &lt;span class="kwrd"&gt;string&lt;/span&gt; d = j.ToString();&lt;br /&gt;                 &lt;span class="kwrd"&gt;string&lt;/span&gt; e = temp.ToString();&lt;br /&gt;                 &lt;span class="kwrd"&gt;string&lt;/span&gt; s = c + d + e;&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; (!s.Contains(&lt;span class="str"&gt;"0"&lt;/span&gt;) &amp;amp;&amp;amp; s.Length == 9)&lt;br /&gt;                 {&lt;br /&gt;                     &lt;span class="kwrd"&gt;char&lt;/span&gt;[] f = s.ToCharArray();&lt;br /&gt;                     Array.Sort(f);&lt;br /&gt;                     &lt;span class="kwrd"&gt;string&lt;/span&gt; compare = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(f);&lt;br /&gt;                     &lt;span class="kwrd"&gt;if&lt;/span&gt; (compare == test)&lt;br /&gt;                     {&lt;br /&gt;                         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!products.Contains(temp))&lt;br /&gt;                         {&lt;br /&gt;                             products.Add(temp);&lt;br /&gt;                             product += temp;&lt;br /&gt;                         }&lt;br /&gt;                     }&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         Console.WriteLine(product);&lt;br /&gt;         TimeSpan time = DateTime.Now - start;&lt;br /&gt;         Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8898296938072421807?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8898296938072421807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8898296938072421807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8898296938072421807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8898296938072421807'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-32.html' title='PROJECT EULER #32'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3890650864395261393</id><published>2009-04-12T14:48:00.004+02:00</published><updated>2009-04-12T14:53:51.294+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #31</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=31"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:verdana;font-size:16;"  &gt;&lt;p&gt;In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:&lt;/p&gt;&lt;blockquote&gt;1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).&lt;/blockquote&gt;&lt;p&gt;It is possible to make £2 in the following way:&lt;/p&gt;&lt;blockquote&gt;1x£1 + 1x50p + 2x20p + 1x5p + 1x2p + 3x1p&lt;/blockquote&gt;&lt;p&gt;How many different ways can £2 be made using any number of coins?&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;using&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; System;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;namespace&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; project_euler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;class&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; Program&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;static&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;void&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="rem"  &gt;//Problem 31&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            DateTime start = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; count = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; a = 0; a &amp;lt;= 200; a += 200)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; b = 0; a + b &amp;lt;= 200; b += 100)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; c = 0; a + b + c &amp;lt;= 200; c += 50)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; d = 0; a + b + c + d &amp;lt;= 200; d += 20)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                            &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; e = 0; a + b + c + d + e &amp;lt;= 200; e += 10)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                                &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; f = 0; a + b + c + d + e + f &amp;lt;= 200; f += 5)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                                    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; g = 0; a + b + c + d + e + f + g &amp;lt;= 200; g += 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                                        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;for&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;int&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; h = 0; a + b + c + d + e + f + g + h &amp;lt;= 200; h++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                                            &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="kwrd"  &gt;if&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; (a + b + c + d + e + f + g + h == 200)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                                                count++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Console.WriteLine(count);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            TimeSpan time = DateTime.Now - start;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Console.WriteLine(&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;" class="str"  &gt;"This took {0}"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;, time);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Console.ReadKey();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color: rgb(246, 246, 246);"&gt;73682&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3890650864395261393?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3890650864395261393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3890650864395261393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3890650864395261393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3890650864395261393'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/link-to-page-in-england-currency-is.html' title='PROJECT EULER #31'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3940938744818142274</id><published>2009-04-12T00:43:00.003+02:00</published><updated>2009-04-12T00:47:32.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #30</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=30"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;1634 = 1&lt;sup&gt;4&lt;/sup&gt; + 6&lt;sup&gt;4&lt;/sup&gt; + 3&lt;sup&gt;4&lt;/sup&gt; + 4&lt;sup&gt;4&lt;/sup&gt;&lt;br /&gt;8208 = 8&lt;sup&gt;4&lt;/sup&gt; + 2&lt;sup&gt;4&lt;/sup&gt; + 0&lt;sup&gt;4&lt;/sup&gt; + 8&lt;sup&gt;4&lt;/sup&gt;&lt;br /&gt;9474 = 9&lt;sup&gt;4&lt;/sup&gt; + 4&lt;sup&gt;4&lt;/sup&gt; + 7&lt;sup&gt;4&lt;/sup&gt; + 4&lt;sup&gt;4&lt;/sup&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p class="info"&gt;&lt;span style="font-family:verdana;"&gt;As 1 = 1&lt;sup&gt;4&lt;/sup&gt; is not a sum it is not included.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;The sum of these numbers is 1634 + 8208 + 9474 = 19316.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Problem 19&lt;/span&gt;&lt;br /&gt;            DateTime start = DateTime.Now;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 2; i &amp;lt; 1000000; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; temp=0;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var c &lt;span class="kwrd"&gt;in&lt;/span&gt; i.ToString().ToCharArray())&lt;br /&gt;                {&lt;br /&gt;                    temp += (&lt;span class="kwrd"&gt;int&lt;/span&gt;)Math.Pow(&lt;span class="kwrd"&gt;double&lt;/span&gt;.Parse(c.ToString()),5);&lt;br /&gt;                }&lt;br /&gt;                sum += temp == i ? temp : 0;&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(sum);&lt;br /&gt;            TimeSpan time = DateTime.Now-start;&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Triple-click for answer: &lt;span style="color:#f6f6f6;"&gt;443839&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3940938744818142274?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3940938744818142274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3940938744818142274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3940938744818142274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3940938744818142274'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-30.html' title='PROJECT EULER #30'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-7536261480185017080</id><published>2009-04-12T00:32:00.005+02:00</published><updated>2009-05-01T18:45:00.953+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #29</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=29"&gt;Link to Project Euler problem 29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Consider all integer combinations of &lt;i&gt;a&lt;/i&gt;&lt;sup&gt;&lt;i&gt;b&lt;/i&gt;&lt;/sup&gt; for 2 &amp;lt;= &lt;i&gt;a&lt;/i&gt; &amp;lt;= 5 and 2 &amp;lt;= &lt;i&gt;b&lt;/i&gt; &amp;lt;= 5:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;2&lt;sup&gt;2&lt;/sup&gt;=4, 2&lt;sup&gt;3&lt;/sup&gt;=8, 2&lt;sup&gt;4&lt;/sup&gt;=16, 2&lt;sup&gt;5&lt;/sup&gt;=32&lt;br /&gt;3&lt;sup&gt;2&lt;/sup&gt;=9, 3&lt;sup&gt;3&lt;/sup&gt;=27, 3&lt;sup&gt;4&lt;/sup&gt;=81, 3&lt;sup&gt;5&lt;/sup&gt;=243&lt;br /&gt;4&lt;sup&gt;2&lt;/sup&gt;=16, 4&lt;sup&gt;3&lt;/sup&gt;=64, 4&lt;sup&gt;4&lt;/sup&gt;=256, 4&lt;sup&gt;5&lt;/sup&gt;=1024&lt;br /&gt;5&lt;sup&gt;2&lt;/sup&gt;=25, 5&lt;sup&gt;3&lt;/sup&gt;=125, 5&lt;sup&gt;4&lt;/sup&gt;=625, 5&lt;sup&gt;5&lt;/sup&gt;=3125&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;If they are then placed in numerical order, with any repeats removed, we get the following sequence of 15 distinct terms:&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;How many distinct terms are in the sequence generated by &lt;i&gt;a&lt;/i&gt;&lt;sup&gt;&lt;i&gt;b&lt;/i&gt;&lt;/sup&gt; for 2 &amp;lt;= &lt;i&gt;a&lt;/i&gt; &amp;lt;= 100 and 2 &amp;lt;= &lt;i&gt;b&lt;/i&gt; &amp;lt;= 100?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 29&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           var uniques = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; a = 2; a &amp;lt;= 100; a++)&lt;br /&gt;           {&lt;br /&gt;               BigInt n = &lt;span class="kwrd"&gt;new&lt;/span&gt; BigInt(a);&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; b = 2; b &amp;lt;= 100; b++)&lt;br /&gt;               {&lt;br /&gt;                   n *= a;&lt;br /&gt;                   &lt;span class="kwrd"&gt;string&lt;/span&gt; s = n.ToString();&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (!uniques.Contains(s))&lt;br /&gt;                       uniques.Add(s);&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(uniques.Count);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-7536261480185017080?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/7536261480185017080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=7536261480185017080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7536261480185017080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/7536261480185017080'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-29.html' title='PROJECT EULER #29'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1051942938809850354</id><published>2009-04-12T00:03:00.006+02:00</published><updated>2009-05-01T18:44:14.105+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spirals'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #28</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=28"&gt;Link to Project Euler problem 28&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:&lt;/p&gt;&lt;p  style="text-align: center;font-family:courier new;" align="center"&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;21&lt;/span&gt; 22 23 24 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;25&lt;/span&gt;&lt;br /&gt;20 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;7 &lt;/span&gt;8 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;9&lt;/span&gt; 10&lt;br /&gt;19 6 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;1&lt;/span&gt; 2 11&lt;br /&gt;18 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;5&lt;/span&gt; 4 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;3&lt;/span&gt; 12&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;17&lt;/span&gt; 16 15 14 &lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;13&lt;/span&gt;&lt;/p&gt;&lt;p&gt;It can be verified that the sum of both diagonals is 101.&lt;/p&gt;&lt;p&gt;What is the sum of both diagonals in a 1001 by 1001 spiral formed in the same way?&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;  {&lt;br /&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;      {&lt;br /&gt;          &lt;span class="rem"&gt;//Problem 28&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;//for a n x n spiral, the corners are given by&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;//tr: n^2, tl: n^2 - n + 1, bl: n^2 - 2n + 2, br: n^2 - 3n + 3.&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;//so for each square we get 4n^2 - 6n + 6.&lt;/span&gt;&lt;br /&gt;          DateTime start = DateTime.Now;&lt;br /&gt;          &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;          &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 3; i &amp;lt; 1002; i+=2)&lt;br /&gt;          {&lt;br /&gt;              sum += 4*i*i - 6*i + 6;&lt;br /&gt;          }&lt;br /&gt;          &lt;span class="rem"&gt;//The middle number (1) is counted twice ;-)&lt;/span&gt;&lt;br /&gt;          sum += 1;&lt;br /&gt;          Console.WriteLine(sum);&lt;br /&gt;          TimeSpan time = DateTime.Now-start;&lt;br /&gt;          Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;          Console.ReadKey();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1051942938809850354?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1051942938809850354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1051942938809850354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1051942938809850354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1051942938809850354'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-28.html' title='PROJECT EULER #28'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3332863916776425342</id><published>2009-04-11T23:55:00.007+02:00</published><updated>2009-05-01T18:43:29.283+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #27</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=27"&gt;Link to Project Euler problem 27&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Euler published the remarkable quadratic formula:&lt;/span&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;i&gt;n&lt;/i&gt;² + &lt;i&gt;n&lt;/i&gt; + 41&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;It turns out that the formula will produce 40 primes for the consecutive values &lt;i&gt;n&lt;/i&gt; = 0 to 39. However, when &lt;i&gt;n&lt;/i&gt; = 40, 40&lt;sup&gt;2&lt;/sup&gt; + 40 + 41 = 40(40 + 1) + 41 is divisible by 41, and certainly when &lt;i&gt;n&lt;/i&gt; = 41, 41² + 41 + 41 is clearly divisible by 41.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Using computers, the incredible formula &lt;i&gt;n&lt;/i&gt;² - 79&lt;i&gt;n&lt;/i&gt; + 1601 was discovered, which produces 80 primes for the consecutive values &lt;i&gt;n&lt;/i&gt; = 0 to 79. The product of the coefficients, -79 and 1601, is -126479.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Considering quadratics of the form:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;i&gt;n&lt;/i&gt;² + &lt;i&gt;an&lt;/i&gt; + &lt;i&gt;b&lt;/i&gt;, where &lt;i&gt;a&lt;/i&gt; &amp;lt; 1000 and &lt;i&gt;b&lt;/i&gt; &amp;lt; 1000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;" class="info"&gt;&lt;span style="font-family:verdana;"&gt;where &lt;i&gt;n&lt;/i&gt; is the modulus/absolute value of &lt;i&gt;n&lt;/i&gt;&lt;br /&gt;e.g. 11 = 11 and -4 = 4&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Find the product of the coefficients, &lt;i&gt;a&lt;/i&gt; and &lt;i&gt;b&lt;/i&gt;, for the quadratic expression that produces the maximum number of primes for consecutive values of &lt;i&gt;n&lt;/i&gt;, starting with &lt;i&gt;n&lt;/i&gt; = 0.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 27&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; result = 0, max = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = -999; i &amp;lt; 1000; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = -999; j &amp;lt; 1000; j++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; n = 0, number = 0;&lt;br /&gt;                   &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;br /&gt;                   {&lt;br /&gt;                       number = n*n + i*n + j;&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; (!IsPrime(number))&lt;br /&gt;                           &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                       n++;&lt;br /&gt;                   }&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (n&amp;gt;max)&lt;br /&gt;                   {&lt;br /&gt;                       max = n;&lt;br /&gt;                       result = i*j;&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(result);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsPrime(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n &amp;lt; 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n == 2)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 2; i &amp;lt;= Math.Sqrt(n); i++)&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (n%i == 0)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3332863916776425342?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3332863916776425342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3332863916776425342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3332863916776425342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3332863916776425342'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-27.html' title='PROJECT EULER #27'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5850461044327971569</id><published>2009-04-11T23:27:00.007+02:00</published><updated>2009-05-01T18:42:48.002+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #26</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=26"&gt;Link to Project Euler problem 26&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given:&lt;/p&gt;&lt;blockquote&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;3&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.(3)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;4&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.25&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;5&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;6&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.1(6)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;7&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.(142857)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;8&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.125&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;9&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.(1)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;10&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;= &lt;/td&gt;&lt;td&gt;0.1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;p&gt;Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle. It can be seen that &lt;sup&gt;1&lt;/sup&gt;/&lt;sub&gt;7&lt;/sub&gt; has a 6-digit recurring cycle.&lt;/p&gt;&lt;p&gt;Find the value of &lt;i&gt;d&lt;/i&gt; &amp;lt; 1000 for which 1/ &lt;i&gt;d&lt;/i&gt; contains the longest recurring cycle in its decimal fraction part.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 26&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; maxLength = 0, result=0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt;( &lt;span class="kwrd"&gt;int&lt;/span&gt; i=1; i&amp;lt;1000; i++ )&lt;br /&gt;           {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; length = LengthOfCycle(i);&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt;( length &amp;gt; maxLength )&lt;br /&gt;               {&lt;br /&gt;                   result = i;&lt;br /&gt;                   maxLength = length;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(result);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LengthOfCycle(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           var quotients = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(1000){0};&lt;br /&gt;           var remainders = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(1000) {1};&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1000; i++)&lt;br /&gt;           {&lt;br /&gt;               quotients.Add(remainders[i - 1]*10/n);&lt;br /&gt;               remainders.Add(remainders[i - 1]*10 - quotients[i]*n);&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; i; j++)&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (quotients[j] == quotients[i] &amp;amp;&amp;amp; remainders[j] == remainders[i])&lt;br /&gt;                       &lt;span class="kwrd"&gt;return&lt;/span&gt; i - j;&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; -1;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5850461044327971569?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5850461044327971569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5850461044327971569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5850461044327971569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5850461044327971569'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-26.html' title='PROJECT EULER #26'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-1366074722488025280</id><published>2009-04-11T15:45:00.006+02:00</published><updated>2009-05-01T18:41:58.624+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #25</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=25"&gt;Link to Project Euler problem 25&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;The Fibonacci sequence is defined by the recurrence relation:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;F&lt;sub&gt;&lt;i&gt;n&lt;/i&gt;&lt;/sub&gt; = F&lt;sub&gt;&lt;i&gt;n-&lt;/i&gt;1&lt;/sub&gt; + F&lt;sub&gt;&lt;i&gt;n-&lt;/i&gt;2&lt;/sub&gt;, where F&lt;sub&gt;1&lt;/sub&gt; = 1 and F&lt;sub&gt;2&lt;/sub&gt; = 1.&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Hence the first 12 terms will be:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;F&lt;sub&gt;1&lt;/sub&gt; = 1&lt;br /&gt;F&lt;sub&gt;2&lt;/sub&gt; = 1&lt;br /&gt;F&lt;sub&gt;3&lt;/sub&gt; = 2&lt;br /&gt;F&lt;sub&gt;4&lt;/sub&gt; = 3&lt;br /&gt;F&lt;sub&gt;5&lt;/sub&gt; = 5&lt;br /&gt;F&lt;sub&gt;6&lt;/sub&gt; = 8&lt;br /&gt;F&lt;sub&gt;7&lt;/sub&gt; = 13&lt;br /&gt;F&lt;sub&gt;8&lt;/sub&gt; = 21&lt;br /&gt;F&lt;sub&gt;9&lt;/sub&gt; = 34&lt;br /&gt;F&lt;sub&gt;10&lt;/sub&gt; = 55&lt;br /&gt;F&lt;sub&gt;11&lt;/sub&gt; = 89&lt;br /&gt;F&lt;sub&gt;12&lt;/sub&gt; = 144&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;The 12th term, F&lt;sub&gt;12&lt;/sub&gt;, is the first term to contain three digits.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;What is the first term in the Fibonacci sequence to contain 1000 digits?&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 25&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="rem"&gt;//again we use base 100000, saving the&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//chunks of the big number in a List&amp;lt;int&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; digits = 0,carry=0,fibNo =2;&lt;br /&gt;           var a = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;{1};&lt;br /&gt;           var b = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;{1};&lt;br /&gt;           var c = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (digits&amp;lt;1000)&lt;br /&gt;           {&lt;br /&gt;               fibNo+=1;&lt;br /&gt;               &lt;span class="rem"&gt;//add the chunks carrying over to the next chunk&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; b.Count; i++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; temp = a[i] + b[i] + carry;&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; number;&lt;br /&gt;                   carry =(Math.DivRem(temp, 100000, &lt;span class="kwrd"&gt;out&lt;/span&gt; number));&lt;br /&gt;                   c.Add(number);&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="rem"&gt;//if a has more chunks than b....&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt;(a.Count&amp;gt;b.Count)&lt;br /&gt;               {&lt;br /&gt;                   c.Add(a[a.Count-1] + carry);&lt;br /&gt;                   carry = 0;&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="rem"&gt;//if the sum of a and b makes a new chunk...&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (carry &amp;gt; 0)&lt;br /&gt;               {&lt;br /&gt;                   c.Add(carry);&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="rem"&gt;//swap the numbers around&lt;/span&gt;&lt;br /&gt;               b.Clear();&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; a)&lt;br /&gt;               {&lt;br /&gt;                   b.Add(i);&lt;br /&gt;               }&lt;br /&gt;               a.Clear();&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; c)&lt;br /&gt;               {&lt;br /&gt;                   a.Add(i);&lt;br /&gt;               }&lt;br /&gt;               c.Clear();&lt;br /&gt;               &lt;span class="rem"&gt;//calculate how many digits, check the last chunk (MSB)&lt;/span&gt;&lt;br /&gt;               &lt;span class="rem"&gt;//for less than 5 digits&lt;/span&gt;&lt;br /&gt;               digits = a.Count*5;&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] ch = a[a.Count-1].ToString().ToCharArray();&lt;br /&gt;               digits -= 5-ch.Length;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(fibNo + &lt;span class="str"&gt;" has "&lt;/span&gt; + digits + &lt;span class="str"&gt;" digits."&lt;/span&gt;);&lt;br /&gt;           TimeSpan time = DateTime.Now-start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-1366074722488025280?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/1366074722488025280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=1366074722488025280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1366074722488025280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/1366074722488025280'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-25.html' title='PROJECT EULER #25'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3265017012715696297</id><published>2009-04-11T15:38:00.005+02:00</published><updated>2009-05-01T18:41:23.240+02:00</updated><title type='text'>PROJECT EULER #24</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=24"&gt;Link to Project Euler problem 24&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:&lt;/span&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family:verdana;"&gt;012 021 102 120 201 210&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 24&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//There are 10! permutations of 0123456789&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//There are 9! permutations of 123456789 = 362880&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//So for numbers beginning with 0 and 1 there are 725760 permutations&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//Thus we want the 1000000 - 725760 = 274240. permutation in the 2xxxxxxxxx group.&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;//20xxxxxxxx has 8! permutations = 40320. 274240/40320 = 6.8....etc&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;char&lt;/span&gt;[] result= &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;[10];&lt;br /&gt;           &lt;span class="kwrd"&gt;double&lt;/span&gt; permutation = 1000000;&lt;br /&gt;           &lt;span class="kwrd"&gt;string&lt;/span&gt; s = &lt;span class="str"&gt;"0123456789"&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = s.Length-1; i &amp;gt;= 0; i--)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;double&lt;/span&gt; index = Math.Ceiling(permutation/FactorialSmallInt(s.Length-1))-1;&lt;br /&gt;               result[i] = s[(&lt;span class="kwrd"&gt;int&lt;/span&gt;) index];&lt;br /&gt;               s=s.Remove((&lt;span class="kwrd"&gt;int&lt;/span&gt;) index, 1);&lt;br /&gt;               permutation -= FactorialSmallInt(i)*index;&lt;br /&gt;           }&lt;br /&gt;           Array.Reverse(result);&lt;br /&gt;           Console.WriteLine(&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(result));&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; FactorialSmallInt(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; factorial=1;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt;= n; i++)&lt;br /&gt;           {&lt;br /&gt;               factorial *= i;&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; factorial;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3265017012715696297?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3265017012715696297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3265017012715696297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3265017012715696297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3265017012715696297'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-24.html' title='PROJECT EULER #24'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-5380135367987252768</id><published>2009-04-11T10:02:00.015+02:00</published><updated>2009-05-01T18:40:34.596+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #23</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=23"&gt;Link to Project Euler problem 23&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;p&gt;A perfect number is a number for which the sum of its proper divisors is exactly equal to the number. For example, the sum of the proper divisors of 28 would be 1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number.&lt;/p&gt;&lt;p&gt;A number whose proper divisors are less than the number is called deficient and a number whose proper divisors exceed the number is called abundant.&lt;/p&gt;&lt;p&gt;As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16, the smallest number that can be written as the sum of two abundant numbers is 24. By mathematical analysis, it can be shown that all integers greater than 28123 can be written as the sum of two abundant numbers. However, this upper limit cannot be reduced any further by analysis even though it is known that the greatest number that cannot be expressed as the sum of two abundant numbers is less than this limit.&lt;/p&gt;&lt;p&gt;Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 23&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; result = 0;&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; abundantNumbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; numbers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 28123; i++)&lt;br /&gt;           {&lt;br /&gt;               numbers.Add(i+1);&lt;br /&gt;               result += numbers[i];&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsAbundant(numbers[i]))&lt;br /&gt;                   abundantNumbers.Add(numbers[i]);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; abundantNumbers.Count; i++)&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = i; j &amp;lt; abundantNumbers.Count; j++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; temp = abundantNumbers[i] + abundantNumbers[j] - 1;&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt; (temp &amp;lt; numbers.Count)&lt;br /&gt;                   {&lt;br /&gt;                       result -= numbers[temp];&lt;br /&gt;                       numbers[temp] = 0;&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;           Console.WriteLine(result);&lt;br /&gt;           TimeSpan time = DateTime.Now - start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsAbundant(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; n; i++)&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (n%i == 0)&lt;br /&gt;                   sum += i;&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (sum &amp;gt; n)&lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;           &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;71&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-5380135367987252768?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/5380135367987252768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=5380135367987252768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5380135367987252768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/5380135367987252768'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-23.html' title='PROJECT EULER #23'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-111796802965441038</id><published>2009-04-11T09:46:00.019+02:00</published><updated>2009-05-01T18:39:49.511+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #22</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=22"&gt;Link to Project Euler problem 22&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Using &lt;/span&gt;&lt;a href="http://projecteuler.net/project/names.txt"&gt;&lt;span style="font-family:verdana;"&gt;names.txt&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; (right click and 'Save Link/Target As...'), a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.&lt;br /&gt;&lt;/span&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would obtain a score of 938 x 53 = 49714.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;What is the total of all the name scores in the file?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;I live and work in Norway, where 'CAA' comes after 'CAZ' in the alphabet (because we have the letter 'Å' here which can be written 'AA' and which comes after 'Z'). This meant that I had to change the CurrentCulture settings to English to make this work.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Globalization;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 22&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           Thread.CurrentThread.CurrentCulture = &lt;span class="kwrd"&gt;new&lt;/span&gt; CultureInfo(&lt;span class="str"&gt;"en-GB"&lt;/span&gt;);&lt;br /&gt;           StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../names.txt"&lt;/span&gt;);&lt;br /&gt;           &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sr.ReadToEnd().Replace(&lt;span class="str"&gt;'"'&lt;/span&gt;,&lt;span class="str"&gt;' '&lt;/span&gt;).ToUpper();&lt;br /&gt;           &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = {&lt;span class="str"&gt;','&lt;/span&gt;};&lt;br /&gt;           &lt;span class="kwrd"&gt;string&lt;/span&gt;[] split = s.Split(c);&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; names = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;long&lt;/span&gt; sum=0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; split.Length; i++)&lt;br /&gt;           {&lt;br /&gt;               names.Add(split[i].Trim());&lt;br /&gt;           }&lt;br /&gt;           names.Sort();&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = names.Count-1; i &amp;gt;=0 ; i--)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=0;&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] d = names[i].ToCharArray();&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;char&lt;/span&gt; c1 &lt;span class="kwrd"&gt;in&lt;/span&gt; d)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;value&lt;/span&gt; += c1-64;&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="kwrd"&gt;value&lt;/span&gt; *= (i+1);&lt;br /&gt;               sum += &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(sum);&lt;br /&gt;           TimeSpan time = DateTime.Now-start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-111796802965441038?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/111796802965441038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=111796802965441038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/111796802965441038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/111796802965441038'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/link-to-page-using-names.html' title='PROJECT EULER #22'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-9030235617201466854</id><published>2009-04-11T01:46:00.015+02:00</published><updated>2009-05-01T18:39:14.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Amicable Numbers'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #21</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=21"&gt; Link to Project Euler problem 21&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Let d(&lt;i&gt;n&lt;/i&gt;) be defined as the sum of proper divisors of &lt;i&gt;n&lt;/i&gt; (numbers less than &lt;i&gt;n&lt;/i&gt; which divide evenly into &lt;i&gt;n&lt;/i&gt;).&lt;br /&gt;If d(&lt;i&gt;a&lt;/i&gt;) = &lt;i&gt;b&lt;/i&gt; and d(&lt;i&gt;b&lt;/i&gt;) = &lt;i&gt;a&lt;/i&gt;, where &lt;i&gt;a&lt;/i&gt; &lt;img style="vertical-align: middle;" alt="≠" src="http://projecteuler.net/images/symbol_ne.gif" border="0" width="11" height="10" /&gt; &lt;i&gt;b&lt;/i&gt;, then &lt;i&gt;a&lt;/i&gt; and &lt;i&gt;b&lt;/i&gt; are an amicable pair and each of &lt;i&gt;a&lt;/i&gt; and &lt;i&gt;b&lt;/i&gt; are called amicable numbers.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Evaluate the sum of all the amicable numbers under 10000.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Problem 21&lt;/span&gt;&lt;br /&gt;        DateTime start = DateTime.Now;&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; sum=0;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 10000; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; n=IsAmicable(i);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (i!=n &amp;amp;&amp;amp; i == IsAmicable(n))&lt;br /&gt;                sum += i;&lt;br /&gt;        }&lt;br /&gt;        Console.WriteLine(sum);&lt;br /&gt;        TimeSpan time = DateTime.Now - start;&lt;br /&gt;        Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;        Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; IsAmicable(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; temp=0;&lt;br /&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt;= n/2; j++)&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (n%j == 0)&lt;br /&gt;                temp += j;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; temp;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;} &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-9030235617201466854?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/9030235617201466854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=9030235617201466854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/9030235617201466854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/9030235617201466854'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-21.html' title='PROJECT EULER #21'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-557906432698034698</id><published>2009-04-10T22:03:00.013+02:00</published><updated>2009-05-01T18:09:43.874+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #20</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=20"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;em&gt;n&lt;/em&gt;! means &lt;i&gt;n&lt;/i&gt; x (&lt;i&gt;n&lt;/i&gt; - 1) x ... x 3 x 2 x 1&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Find the sum of the digits in the number 100!&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 20&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; carry = 0, sum =0;&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; factorial100 = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;() {100};&lt;br /&gt;           List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; temp = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i=99;i&amp;gt;1;i--)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="rem"&gt;//multiply each 'digit' (base million) with present multiplier (i)&lt;/span&gt;&lt;br /&gt;               &lt;span class="rem"&gt;//and add carry from previous calculation&lt;/span&gt;&lt;br /&gt;               &lt;span class="rem"&gt;//divide by 1000000 to get carry and new 'digit' (nice method DivRem gives both)&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j &lt;span class="kwrd"&gt;in&lt;/span&gt; factorial100)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; digitInBaseMillion;&lt;br /&gt;                   &lt;span class="kwrd"&gt;int&lt;/span&gt; k = j*i + carry;&lt;br /&gt;                   carry = Math.DivRem(k, 1000000,&lt;span class="kwrd"&gt;out&lt;/span&gt; digitInBaseMillion);&lt;br /&gt;                   temp.Add(digitInBaseMillion);&lt;br /&gt;               }&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt; (temp.Count==factorial100.Count &amp;amp;&amp;amp; carry != 0)&lt;br /&gt;                   temp.Add(carry);&lt;br /&gt;               carry = 0;&lt;br /&gt;               factorial100.Clear();&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; j &lt;span class="kwrd"&gt;in&lt;/span&gt; temp)&lt;br /&gt;                   factorial100.Add(j);&lt;br /&gt;               temp.Clear();&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j &lt;span class="kwrd"&gt;in&lt;/span&gt; factorial100)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = j.ToString().ToCharArray();&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; c.Length; i++)&lt;br /&gt;                   sum += Convert.ToInt32(c[i].ToString());&lt;br /&gt;           }&lt;br /&gt;           TimeSpan time = DateTime.Now-start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"{0}\nThis took {1}"&lt;/span&gt;, sum, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(246, 246, 246);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-557906432698034698?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/557906432698034698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=557906432698034698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/557906432698034698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/557906432698034698'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-20.html' title='PROJECT EULER #20'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-8150598979984833017</id><published>2009-04-10T20:24:00.013+02:00</published><updated>2009-05-01T18:09:22.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #19</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=19"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;You are given the following information, but you may prefer to do some research for yourself.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;1 Jan 1900 was a Monday. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Thirty days has September,&lt;br /&gt;April, June and November.&lt;br /&gt;All the rest have thirty-one,&lt;br /&gt;Saving February alone,&lt;br /&gt;Which has twenty-eight, rain or shine.&lt;br /&gt;And on leap years, twenty-nine. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 19&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           DateTime date = &lt;span class="kwrd"&gt;new&lt;/span&gt; DateTime(1901,1,1);&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; sundays = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;while&lt;/span&gt; (date.Year&amp;lt;2001)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;if&lt;/span&gt;(date.Day==1 &amp;amp;&amp;amp; date.DayOfWeek==DayOfWeek.Sunday)&lt;br /&gt;               {&lt;br /&gt;                   sundays++;&lt;br /&gt;               }&lt;br /&gt;               date=date.AddDays(1);&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"There were {0} sundays in the 20th Century"&lt;/span&gt;,sundays);&lt;br /&gt;           TimeSpan time = DateTime.Now-start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-8150598979984833017?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/8150598979984833017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=8150598979984833017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8150598979984833017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/8150598979984833017'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-19.html' title='PROJECT EULER #19'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-3023954691416151487</id><published>2009-04-10T20:20:00.009+02:00</published><updated>2009-05-01T18:09:01.931+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #18</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=18"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.&lt;/span&gt;&lt;/p&gt;&lt;p   style="text-align: center;font-family:courier new;font-size:12pt;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;7&lt;/span&gt; 5&lt;br /&gt;2 &lt;span style="color: rgb(255, 0, 0);"&gt;4&lt;/span&gt; 6&lt;br /&gt;8 5 &lt;span style="color: rgb(255, 0, 0);"&gt;9&lt;/span&gt; 3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;That is, 3 + 7 + 4 + 9 = 23.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Find the maximum total from top to bottom of the triangle below:&lt;/span&gt;&lt;/p&gt;&lt;p  style="text-align: center;font-family:courier new;"&gt;&lt;span style="font-family:verdana;"&gt;75&lt;br /&gt;95 64&lt;br /&gt;17 47 82&lt;br /&gt;18 35 87 10&lt;br /&gt;20 04 82 47 65&lt;br /&gt;19 01 23 75 03 34&lt;br /&gt;88 02 77 73 07 63 67&lt;br /&gt;99 65 04 28 06 16 70 92&lt;br /&gt;41 41 26 56 83 40 80 70 33&lt;br /&gt;41 48 72 33 47 32 37 16 94 29&lt;br /&gt;53 71 44 65 25 43 91 52 97 51 14&lt;br /&gt;70 11 33 28 77 73 17 78 39 68 17 57&lt;br /&gt;91 71 52 38 17 14 91 43 58 50 27 29 48&lt;br /&gt;63 66 04 68 89 53 67 30 73 16 69 87 40 31&lt;br /&gt;04 62 98 27 23 09 70 98 73 93 38 53 60 04 23&lt;/span&gt;&lt;/p&gt;&lt;p class="info"&gt;&lt;span style="font-family:verdana;"&gt;&lt;b&gt;NOTE:&lt;/b&gt; As there are only 16384 routes, it is possible to solve this problem by trying every route. However, &lt;/span&gt;&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=67"&gt;&lt;span style="font-family:verdana;"&gt;Problem 67&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o)&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ProjectEuler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 18&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(&lt;span class="str"&gt;@"../../littleTriangle.txt"&lt;/span&gt;);&lt;br /&gt;           &lt;span class="rem"&gt;//Treat the triangle as a 2 dimensional array[][]&lt;/span&gt;&lt;br /&gt;           List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; triangle = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;           &lt;span class="rem"&gt;//make the triangle&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 15; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;string&lt;/span&gt; s = sr.ReadLine();&lt;br /&gt;               &lt;span class="kwrd"&gt;char&lt;/span&gt;[] c = {&lt;span class="str"&gt;' '&lt;/span&gt;};&lt;br /&gt;               &lt;span class="kwrd"&gt;string&lt;/span&gt;[] sa = s.Split(c);&lt;br /&gt;               List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; line = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;               &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s1 &lt;span class="kwrd"&gt;in&lt;/span&gt; sa)&lt;br /&gt;               {&lt;br /&gt;                   line.Add(&lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(s1));&lt;br /&gt;               }&lt;br /&gt;               triangle.Add(line);&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="rem"&gt;//row&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 1; i &amp;lt; 15; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="rem"&gt;//column&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0;j&amp;lt;=i; j++)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="rem"&gt;//do the edges&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt;(j==0)&lt;br /&gt;                       triangle[i][0] = triangle[i][0] + triangle[i - 1][0];&lt;br /&gt;                   &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;(j==triangle[i].Count-1)&lt;br /&gt;                       triangle[i][triangle[i].Count-1] = triangle[i][triangle[i].Count - 1] + triangle[i - 1][triangle[i-1].Count-1];&lt;br /&gt;                   &lt;span class="rem"&gt;//do the middle&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                   {&lt;br /&gt;                       triangle[i][j] = triangle[i - 1][j-1] + triangle[i][j] &amp;gt; triangle[i - 1][j ] + triangle[i][j]&lt;br /&gt;                                       ? triangle[i - 1][j-1] + triangle[i][j]&lt;br /&gt;                                       : triangle[i - 1][j ] + triangle[i][j];&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; max = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; triangle[triangle.Count-1])&lt;br /&gt;           {&lt;br /&gt;               max = i &amp;gt; max ? i : max;&lt;br /&gt;           }&lt;br /&gt;           Console.WriteLine(max);&lt;br /&gt;           TimeSpan time = DateTime.Now-start;&lt;br /&gt;           Console.WriteLine(&lt;span class="str"&gt;"This took {0}"&lt;/span&gt;, time);&lt;br /&gt;           Console.ReadKey();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626187215596311778-3023954691416151487?l=siralansdailyramble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siralansdailyramble.blogspot.com/feeds/3023954691416151487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=626187215596311778&amp;postID=3023954691416151487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3023954691416151487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/626187215596311778/posts/default/3023954691416151487'/><link rel='alternate' type='text/html' href='http://siralansdailyramble.blogspot.com/2009/04/project-euler-18.html' title='PROJECT EULER #18'/><author><name>Sir Alan</name><uri>http://www.blogger.com/profile/09000453068165988030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_9e0ZAxB3Rro/Sfm7-Lstu7I/AAAAAAAAAHk/E0g5Z5Y9yc8/S220/PappaOgIsabella.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-626187215596311778.post-4942505297621121404</id><published>2009-04-10T19:57:00.014+02:00</published><updated>2009-05-01T18:08:41.230+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Euler'/><title type='text'>PROJECT EULER #17</title><content type='html'>&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=17"&gt;Link to page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.&lt;br /&gt;&lt;div class="problem_content"&gt;&lt;p&gt;If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used? &lt;/p&gt;&lt;br /&gt;&lt;p class="info"&gt;&lt;b&gt;NOTE:&lt;/b&gt; Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; project_euler&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;   {&lt;br /&gt;       &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;       {&lt;br /&gt;           &lt;span class="rem"&gt;//Problem 17&lt;/span&gt;&lt;br /&gt;           DateTime start = DateTime.Now;&lt;br /&gt;           &lt;span class="kwrd"&gt;int&lt;/span&gt; sum = 0;&lt;br /&gt;           &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 1; j &amp;lt;= 1000; j++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; ones,temp;&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; hundreds = Math.DivRem(j, 100, &lt;span class="kwrd"&gt;out&lt;/span&gt; temp);&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; tens = Math.DivRem(temp, 10, &lt;span class="kwrd"&gt;out&lt;/span&gt; ones);&lt;br /&gt;               &lt;span class="kwrd"&gt;switch&lt;/span&gt; (hundreds)&lt;br /&gt;               {&lt;br /&gt;                   &lt;span class="kwrd"&gt;case&lt;/span&gt; 10:&lt;span class="rem"&gt;//one thousand&lt;/span&gt;&lt;br /&gt;                       sum += 11;&lt;br /&gt;                       &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                   &lt;span class="kwrd"&gt;case&lt;/span&gt; 6:&lt;span class="rem"&gt;//six&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;case&lt;/span&gt; 2:&lt;span class="rem"&gt;//two&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;case&lt;/span&gt; 1:&lt;span class="rem"&gt;//one&lt;/span&gt;&lt;br /&gt;                       sum += 3;&lt;br /&gt;                       &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                   &lt;span class="kwrd"&gt;case&lt;/span&gt; 9:&lt;span class="rem"&gt;//nine&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kw
