C#-ban hogyan tudom felirni 2 adott szam kozott 2-vel oszthato szamok osszeget?
for loopban sokat probalkoztam vele, de az output sosem azt az eredmenyt adta ki, amit akartam
a valaszokat koszonoom
Inicializálsz egy változót 0-ra, aztán elindulsz az alsó határhoz legközelebbi páros számtól és kettesével lépkedve hozzáadod a számokat az előbb definiált változó értékéhez ameddig el nem éred a felső határt.
(elképzelhetőnek tartom egyébként, hogy matematikai formulával is számolható konstans időben)
Hogyan próbálkoztál vele?
Meg lehet oldani ciklussal többféleképpen, például:
Legyen az input A és B
Ha A páratlan, legyen I := A + 1; különben I := A
Utána I-t kettesével léptetve, összeadod egy "összeg" változóban, amíg I < B + 1. (A +1 azért kell, hogy működjön páros és páratlan B esetén is. Vagy megvizsgálod, mint A-t.)
Vagy kitalálsz rá egy képletet, amivel A-ból és B-ből ki lehet számolni:
Mivel ez egy számtani sorozat (a1 = A ha páros és A+1 ha A páratlan; d = 2), ezért használható az összegképlet.
Az utolsó elem: an = B ha páros, B-1 ha B páratlan
Sn = (a1 + an) * n / 2
Az n-et kell még kiszámolni...
"A +1 azért kell, hogy működjön páros és páratlan B esetén is. Vagy megvizsgálod, mint A-t."
Miért jobb az I < B + 1, mint az I <= B?
Most hirtelen ez jutott eszembe:
int sum = 0;
while (b > a)
{
sum += b % 2 == 0 ? b : 0;
b--;
}
A szelso eseteket pedig le kell kezelni. Most b benne van, a nincsen benne.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!