- 论坛徽章:
- 4
|
本帖最后由 icymirror 于 2015-09-26 17:34 编辑
最近没有那么忙,开始学习golang,有空就拿Project Euler上的题目来练手吧。
Problem 1.
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.
问题1:
如果我们把10以内的3或5的倍数列出来,我们会得到:3, 5, 6和9。这些数之和是23。
现在,找出1000以内的3或5的倍数的数字之和。
method 1- package main
- import (
- "fmt"
- )
- func Problem001_basic(scope, factor1, factor2 int) int {
- sum := 0
- for index := 0; index <= scope; index += factor1 {
- sum = sum + index
- }
-
- for index := 0; index <= scope; index += factor2 {
- sum = sum + index
- }
-
- for index := 0; index <= scope; index += factor1 * factor2 {
- sum = sum - index
- }
-
- return sum
- }
- func Problem001_improve(scope, factor1, factor2 int) int {
- sum := (factor1 + scope / factor1 * factor1) * (scope / factor1) / 2
- sum = sum + (factor2 + scope / factor2 * factor2) * (scope / factor2) / 2
- factor3 := factor1 * factor2
- sum = sum - (factor3 + scope / factor3 * factor3) * (scope / factor3) / 2
- return sum
- }
- func main() {
- fmt.Println("Problem 001 result: ", Problem001_basic(1000, 3, 5))
- fmt.Println("Problem 001 result: ", Problem001_improve(1000, 3, 5))
- }
复制代码 |
|