Thank you Ryan .  I never compiled my program with -O3 option before and now i can feel the power of compiler optimisation. <br>Regards <br>Mukesh Tiwari<br><br><div class="gmail_quote">On Tue, Nov 8, 2011 at 6:50 PM, Ryan Yates <span dir="ltr">&lt;<a href="mailto:fryguybob@gmail.com">fryguybob@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I forgot to add, I&#39;m on 32-bit GHC and the sum will overflow there, so<br>
I changed main:<br>
<br>
main = putStrLn . show . sum  $ ([ if and [ pList ! i , divPrime .<br>
pred $ i ] then (fromIntegral $ pred i) else 0 | i &lt;- [ 2 .. 10 ^ 8 ]<br>
] :: [Integer])<br>
<div><div></div><div class="h5"><br>
<br>
<br>
On Tue, Nov 8, 2011 at 8:19 AM, Ryan Yates &lt;<a href="mailto:fryguybob@gmail.com">fryguybob@gmail.com</a>&gt; wrote:<br>
&gt; If I compile with optimizations:<br>
&gt;<br>
&gt; ghc --make -O3 primes.hs<br>
&gt;<br>
&gt; I get an answer that is off by one from the C++ program in a few seconds.<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Nov 8, 2011 at 7:46 AM, mukesh tiwari<br>
&gt; &lt;<a href="mailto:mukeshtiwari.iiitm@gmail.com">mukeshtiwari.iiitm@gmail.com</a>&gt; wrote:<br>
&gt;&gt; In that loop , I  am collecting all the primes in vector how ever I changed<br>
&gt;&gt; the c++ code and  now it resembles to Haskell code. This code  still gives<br>
&gt;&gt; the answer within a second.<br>
&gt;&gt;<br>
&gt;&gt; #include&lt;cstdio&gt;<br>
&gt;&gt; #include&lt;iostream&gt;<br>
&gt;&gt; #include&lt;vector&gt;<br>
&gt;&gt; #define Lim 100000001<br>
&gt;&gt; using namespace std;<br>
&gt;&gt;<br>
&gt;&gt; bool prime [Lim];<br>
&gt;&gt; vector&lt;int&gt; v ;<br>
&gt;&gt;<br>
&gt;&gt; void isPrime ()<br>
&gt;&gt;      {<br>
&gt;&gt;         for( int i = 2 ; i * i &lt;= Lim ; i++)<br>
&gt;&gt;          if ( !prime [i]) for ( int j = i * i ; j &lt;= Lim ; j += i ) prime<br>
&gt;&gt; [j] = 1 ;<br>
&gt;&gt;<br>
&gt;&gt;         //for( int i = 2 ; i &lt;= Lim ; i++) if ( ! prime[i] ) v.push_back( i<br>
&gt;&gt; ) ;<br>
&gt;&gt;         //cout&lt;&lt;v.size()&lt;&lt;endl;<br>
&gt;&gt;         //for(int i=0;i&lt;10;i++) cout&lt;&lt;v[i]&lt;&lt;&quot; &quot;;cout&lt;&lt;endl;<br>
&gt;&gt;<br>
&gt;&gt;      }<br>
&gt;&gt;<br>
&gt;&gt; int main()<br>
&gt;&gt;     {<br>
&gt;&gt;         isPrime();<br>
&gt;&gt;         int n = v.size();<br>
&gt;&gt;         long long sum = 0;<br>
&gt;&gt;         for(int i = 0 ; i &lt; Lim ; i ++)<br>
&gt;&gt;          if ( ! prime [i])<br>
&gt;&gt;          {<br>
&gt;&gt;             int k = i-1;<br>
&gt;&gt;             bool f = 0;<br>
&gt;&gt;             for(int i = 1 ; i*i&lt;= k ; i++)<br>
&gt;&gt;                 if ( k % i == 0 &amp;&amp; prime[ i + ( k / i ) ] )  { f=1 ; break ;<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;             if ( !f ) sum += k;<br>
&gt;&gt;          }<br>
&gt;&gt;         cout&lt;&lt;sum&lt;&lt;endl;<br>
&gt;&gt;     }<br>
&gt;&gt;<br>
&gt;&gt; Regards<br>
&gt;&gt; Mukesh Tiwari<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Nov 8, 2011 at 6:03 PM, Ivan Lazar Miljenovic<br>
&gt;&gt; &lt;<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 8 November 2011 23:29, mukesh tiwari &lt;<a href="mailto:mukeshtiwari.iiitm@gmail.com">mukeshtiwari.iiitm@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; Also, I&#39;m not sure if the logic in the two versions is the same: I&#39;m<br>
&gt;&gt;&gt; &gt;&gt; not sure about how you handle the boolean aspect in C++, but you have<br>
&gt;&gt;&gt; &gt;&gt; a third for-loop there that doesn&#39;t seem to correspond to anything in<br>
&gt;&gt;&gt; &gt;&gt; the Haskell version.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt; Which  loop ?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; for( int i = 2 ; i &lt;= Lim ; i++) if ( ! prime[i] ) v.push_back( i ) ;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Ivan Lazar Miljenovic<br>
&gt;&gt;&gt; <a href="mailto:Ivan.Miljenovic@gmail.com">Ivan.Miljenovic@gmail.com</a><br>
&gt;&gt;&gt; <a href="http://IvanMiljenovic.wordpress.com" target="_blank">IvanMiljenovic.wordpress.com</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>