Olvassunk be egy pozitív egész számot és írjuk ki az összes osztóját. A feladatot for ciklussal oldjuk meg.
Hogyan fogjunk a megoldáshoz?
A feladat azon számok kiválasztása, melyek a szám osztói 2-től szám/2-ig. Az osztót először a 2-nek választjuk és megnézzük, hogy osztója-e a számnak. Ha igen, megjegyezzük és a következő eggyel növelt osztóval próbálkozunk. Újra megvizsgáljuk, hogy ez osztója-e a számnak. A folyamatot addig végezzük, míg az osztó egyenlő nem lesz szám/2-vel.
A feladat megoldásához három egész típusú változóra lesz szükségünk:
- szám tartalmazza a vizsgálandó számot,
- osztó tartalmazza az osztót.
- osztódb tartalmazza az osztók számát.
A feladat megoldása for ciklussal
A feladatot for ciklussal oldjuk meg, ismert a ciklus kezdőértéke (a legkisebb osztó, 2), a lépésköz (1) és a ciklus végértéke (szám/2). A ciklusváltozó minden értékére megvizsgáljuk az oszthatóságot, ha a szám osztható a ciklusváltozóval, beírjuk a lista ablakba.
Az oszthatóság vizsgálata nagyon egyszerű, hiszen egy szám akkor osztható egy másik számmal, ha maradék nélkül meg van benne. A % művelet az osztás utáni maradékot adja vissza, ha ezt feltételes utasításban vizsgáljuk, akkor a nulla jelenti az oszthatóságot.
if (szám % osztó ==0) // osztója
else // nem osztója
A feladat megoldása:
Mivel pozitív egész számnak keressük az osztóját, a program negatív szám esetén hibajelzést ad.
// Osztók keresése for ciklussal
private void button1_Click(object sender, EventArgs e)
{
int osztó, szám, osztódb=0;
listBox1.Items.Clear();
if (textBox1.Text != "")
{
szám = Int32.Parse(textBox1.Text);
if (szám > 0)
{
for (osztó = 2; osztó <= szám / 2; osztó++)
{
if (szám % osztó == 0)
{
listBox1.Items.Add(osztó);
osztódb++;
}
}
if (osztódb == 0)
textBox2.Text = "PRIMSZÁM";
else
textBox2.Text = "Osztók darabszáma: " +
osztódb.ToString();
}
else
MessageBox.Show("Hibás adat!", "Üzenet");
}
}
// Ha az adat változik az előző eredmények törlődnek
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
textBox2.Text = "";
}
A program futási eredményei: