in

SDT Community Server

SDT Forums, Blogs, Photos server.

wego

February 2008 - Posts

  • 数学对编程的重要

    且看如下2

     (1) 算出1加到100的总和。  

         低效:             

                 int sum = 0;        

                 for (int i=1; i<=100; i++)   

                    sum += i;

         高效:                          
               int sum = ((1 + 100) * (100 - 1 + 1)) / 2; 
    或更精简的 int sum = (101 * 100) >> 2;    

      (2) 计算1加到10000,奇数和偶数的总和。

       低效: 

             int oddSum = 0;                            
             
     int evenSum = 0;                           
             
     for (int i=1; i<=10000; i++)                          
            
     {                                                  
                  
    if (i % 2 == 0)                                                                       
                        
    evenSum += i;                                               
                  

               else
              oddSum += i;
             } 
             

      高效:                  

              int sum = (10001 * 10000) >> 2;                       
               
    int evenSum = 5001 * 5000;                         
             int oddSum = sum - evenSum; 
     

        1
    10000之间的偶数总和是是2+4+6+...+10000,把它们全部除以2的话会变成1+2+3+...+5000,所以110000偶数的总和不就是1加到5000的两倍   
     ---------------------------------------------
     
        

    可见
    ,  千万不要把曾经和你相伴十多年的数学课程知识给遗忘掉噢 !!

     

Copyright SDT, 2006-2009. All rights reserved.