原题:

/*
 * 原题:
 * If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
 *
 * Find the sum of all the multiples of 3 or 5 below 1000.
 *
 */

翻译:

/*
 * 翻译:
 * 我们列出10以下所有的自然数,并且它们是3或的倍数,我们得到3,5,6,9,他们的和是23
 *
 * 找出1000以下所有3或5的倍数,计算总和。
 */

 

解题思路:

 

解题思路
/// <summary>   
/// 解题思路:   
///     这题没有亮点,所以我把它做的有点看点。   
///     我们可以利用数学公式,利用集合缓存答案然后进行筛选。也就是去掉重复的。   
///     总之,大体思路就是找到所有满足的数字,去掉重复。累加和。   
///    
///     倒奶有了一个新的做法。不知道算不算是一个亮点。   
///     1、定义两个自然数,一个表示3的倍数;一个表示5的倍数。两个数字每次分别加3和5,如果+3或+5后和另一个数字一样,则再+5。   
///     2、每加完一次,就加到累加器中。   
///     3、直到这两个数字有一个>1000就跳出。   
/// </summary>  

 

 

 

实现代码
 1 using System;   
 2   
 3 class Multiples3_5   
 4 {   
 5     internal static int SumMultiples3_5()   
 6     {   
 7         int T = 3;   
 8         int F = 5;   
 9         int Sum = T + F;   
10         int Max = 1000;   
11   
12         while (T <= Max && F <= Max)   
13         {   
14             if (T < F)   
15             {   
16                 T = T + 3 == F ? T + 6 : T + 3;   
17                 Sum += T >= Max ? 0 : T;   
18             }   
19             else if (T > F)   
20             {   
21                 F = F + 5 == T ? F + 10 : F + 5;   
22                 Sum += F >= Max ? 0 : F;   
23             }   
24         }   
25   
26         return Sum;   
27     }   
28 

 

 

posted on 2010-05-18 10:14  干田  阅读(199)  评论(1编辑  收藏  举报