【ProjectEuler】ProjectEuler_001

本文介绍了一个简单的编程挑战,即找出1000以下所有3或5的倍数并计算它们的总和。通过三种不同的方法实现:直接枚举、迭代累加和数学公式计算。
// 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.

using System;
using System.Collections.Generic;
using System.Text;

namespace projecteuler001
{

    class Program
    {
        static void Main(string[] args)
        {
            F3();
        }


        private static int sumOfDiv(int n)
        {
            int sum = n;
            for (int i = n + 1; i < 1000; i++)
            {
                if (i % n == 0)
                {
                    sum += i;
                }
            }
            return sum;
        }

        private static int sumOfDiv2(int n)
        {
            int p = 1000 / n;
            return n * p * (1 + p) / 2;
        }


        private static void F1()
        {
            Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
            DateTime timeStart = DateTime.Now;

            int sum = 0;
            for (int i = 0; i < 1000; i++)
            {
                if (i % 3 == 0 || i % 5 == 0)
                {
                    sum += i;
                }
            }

            Console.WriteLine("Total is " + sum);
            Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds);
        }

        private static void F2()
        {
            Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
            DateTime timeStart = DateTime.Now;


            Console.WriteLine("Total is " + (sumOfDiv(3) + sumOfDiv(5) - sumOfDiv(15)));
            Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds);
        }

        private static void F3()
        {
            Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
            DateTime timeStart = DateTime.Now;

            Console.WriteLine("Total is " + (sumOfDiv2(3) + sumOfDiv2(5) - sumOfDiv2(15)));
            Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds);
        }
    }
}

/*
Void F1()
Total is 233168
Total Milliseconds is 9.0012

Void F2()
Total is 233168
Total Milliseconds is 5.5007

Void F3()
Total is 234168
Total Milliseconds is 7.0009

By GodMoon
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值