如何降低程序执行时间?

时间:2012-12-13 12:53:30

标签: c# time limit execution

如何减少以下程序执行时间:

using System;
using System.Diagnostics;
class LeastMM
{
    static void Main()
    {
        Stopwatch sw = new Stopwatch();
        sw.Start();
        byte[] nums = new byte[5];
        for (byte i = 0; i < nums.Length; i++)
        {
            nums[i] = byte.Parse(Console.ReadLine());
        }
        short? lmm = null;
        //uint currentI = 1;
        byte divisors = 0;
        //for (uint i = 1; i < nums.Length; i++) Console.WriteLine("{0} {1} ", i, nums[i]);
        for (short i = 1; ; i++)
        {
            divisors = 0;
            for (byte j = 0; j < nums.Length; j++)
            {
                if (i % nums[j] == 0) divisors++;
            }
            if (divisors >= 3) 
            {
                lmm = i;
                break;
            }
        }
        Console.WriteLine(lmm);
        sw.Stop();
        Console.WriteLine();
        Console.WriteLine(sw.Elapsed.Seconds + " or " +"0."+sw.Elapsed.Milliseconds);
    }
}

执行时间必须< 0.25秒我尽量不使用循环但是四个不同的变量--a,b,c,d,e,也尝试使用最小的十进制类型。这些都没有奏效。该程序的目的是找到至少3个提供的数字之间的最小多数除数。即,1,2,3,4,5的最小多数除数是4,因为它可以被4,2和1除数。数字在1到100的范围内。

1 个答案:

答案 0 :(得分:1)

当我运行这个时,我得到0.0024ms的输入执行时间= 1,2,3,4,5 - 如果我将定时代码移到ReadLine循环之后。我的电脑可能比你的电脑快很多,但我无法想象得到&gt;即使你在Speak-n-Spell上运行它也需要0.25秒。

定时用户输入简直太疯狂了。如果这是由外部定时的,你确定输入应该逐行读取,而不是通过命令行传入吗?