Programozás. C++. Egy bekért szám osztóinak számát kéne megadni. Hogyan oldjam meg?
Maradékos osztással nézd meg, hogy az adott számnak osztója-e a vizsgált szám.
Tehát:
int szam = bekértszam
for (int i = 2; i < szam; i++)
if (szam % i == 0)
ez a szam osztó
Ezzel szépen megkapod az osztókat. Osztó ügye az a szám, ahol maradék nélkül megvan :)
Egy for ciklusban számlálással meg kell számolni, hány olyan szám van, ami osztja a bekért számot.
Elég a szám feléig elmenni.
De ha elment a feléig, akkor utána adjon hozzá mégegyet, mert a szám önmagával is osztható :)
Amúgy hatékonyabb, ha egyből a prímtényezős felbontását állítod elő. Hiszen ha pl nem osztható 2-vel, 3-al, akkor elég az ötödéig menni, ha öttel sem akkor a hetedéig stb.
Sőt, akkor már azt is csinálhatod, hogy megnézed, melyik prímtényező hányszor fordul elő, ezeket eggyel megnöveled és összeszorzod, és az az osztók száma. Tehát n osztóinak száma d lesz:
d=1;
i=2;
while (n>1)
{
c=1;
while (n%i==0)
{
c++;
n/=i;
}
i++;
d*=c;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!