次のプログラムの実行時間を短縮するにはどうすればよいですか。
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 秒未満である必要があります。ループは使用しないようにしましたが、4 つの異なる変数 (a、b、c、d、e) も可能な限り最小の 10 進数型を使用しようとしました。これらのどれも機能しませんでした。このプログラムの目的は、提供された数値のうちの少なくとも 3 つの間の最小多数決除数を見つけることです。つまり、1、2、3、4、5 の最小多数除数は 4 です。これは、4、2、および 1 で割り切れるからです。数値は、1 から 100 までの範囲です。