Project Euler Problem 05 C# solution

这道题目比较简单,需要注意的是,能被1到20同时整除的数,一定小于 1 到 20 的叠乘,一定包含 1 到 20 的所有素数,同时,对于每一个包含的素数x,如果有其 higher order term , N, 【Math.Power(x, N) < 20】,就不需要其 lower order terms. 比如 有了 2^4 = 16, 就不需要 2^3, 2^2, 2^1, 这些数了。


另外需要注意的是,C# 中,对于四舍五入的函数,Math.Round(), 的处理方式是,四舍六入五成双 的。 用 Ceiling和 Floor 方法来向上向下取整。


using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;




namespace ProjectEuler01
{
    class Program
    {


        static void Main(string[] args)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();

            // Write your code here!
            List
   
   
    
     primels = new List
    
    
     
     () { 2, 3, 5, 7,11,13,17,19 };
            double maxlog;
            double result = 1.0;
            double mynum = 20;

            foreach (int item in primels)
            {
                maxlog = Math.Log(mynum, item);
                maxlog = Math.Floor(maxlog);
                result = result * Math.Pow(item, maxlog);

            }
            Console.WriteLine(result+"是最小能被{0}整除的数",mynum);
            watch.Stop();
            double ts = watch.Elapsed.TotalMilliseconds;
            Console.WriteLine("Totoal running time is " + ts + " ms ");
            Console.ReadLine();
        }

    }

    class MyClass
    {

    }


}


    
    
   
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值