如何减少以下程序执行时间:
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的范围内。
答案 0 :(得分:1)
当我运行这个时,我得到0.0024ms的输入执行时间= 1,2,3,4,5 - 如果我将定时代码移到ReadLine
循环之后。我的电脑可能比你的电脑快很多,但我无法想象得到&gt;即使你在Speak-n-Spell上运行它也需要0.25秒。
定时用户输入简直太疯狂了。如果这是由外部定时的,你确定输入应该逐行读取,而不是通过命令行传入吗?