Код:
// declaration
decimal N = numericUpDown1.Value, loopTotaSum = 0, loopAmount = 0,
prog3Amount, prog3Sum, prog7Amount, prog7Sum, prog21Amount, prog21Sum;
System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
// Loop
st.Start();
for (int i = 1; i <= N; i++)
{
if (i % 3 == 0 || i % 7 == 0)
{
loopTotaSum += i;
loopAmount++;
}
}
loopTotaSum_textBox.Text = loopTotaSum.ToString();
loopAmount_textBox.Text = loopAmount.ToString();
st.Stop();
loopStopwatch_textBox.Text = st.ElapsedMilliseconds.ToString();
st.Reset();
// Progression
st.Start();
prog7Amount = decimal.Truncate(N / 7);
prog7Sum = (7 + prog7Amount * 7) * prog7Amount / 2; //Сначала считаем сумму для прогрессии An=7d
prog3Amount = decimal.Truncate(N / 3);
prog3Sum = (3 + prog3Amount * 3) * prog3Amount / 2; //Считаем сумму арифметической прогрессии An=3d
prog21Amount = decimal.Truncate(N / 21);
prog21Sum = (21 + prog21Amount * 21) * prog21Amount / 2; //Нужно исключить числа, делящиеся на 21. Считаем сумму прогрессии An = 21d
progTotalSum_textBox.Text = Convert.ToString(prog3Sum + prog7Sum - prog21Sum); //Итоговый результат
prog3Amount_textBox.Text = Convert.ToString(prog3Amount + prog7Amount - prog21Amount);
st.Stop();
progStopwatch_textBox.Text = st.ElapsedMilliseconds.ToString();