in

SDT Community Server

SDT Forums, Blogs, Photos server.

wego

数学对编程的重要

且看如下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的两倍   
 ---------------------------------------------
 
    

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

 

Comments

No Comments
Copyright SDT, 2006-2009. All rights reserved.