Írjunk programot, amely két egész számnak megkeresi a legkisebb közös többszörösüket.
Algoritmus készítése
Keressük meg 8 és 18 egész számok legkisebb közös többszörösét kézi számolással.
osztó1 |
szám1 |
szám2 |
legkisebb közös többszörös |
1 |
8 |
18 |
1 |
2 |
4 |
9 |
2 |
2 |
2 |
9 |
4 |
2 |
1 |
9 |
8 |
3 |
- |
3 |
24 |
3 |
- |
1 |
72 |
A legkisebb közös többszörös meghatározásához törzstényezőkre bontjuk a számokat. Először a szám1-nek keressük a törzstényezőit, és a megtalált törzstényezővel elosztjuk a szám1-t. A szám2-őt csak akkor osztjuk a törzstényezővel, ha az osztója a számnak. A legkisebb többszöröst beszorozzuk a megtalált törzstényezővel, ezt addig végezzük, míg a szám1 1 lesz. Ezután a szam2-vel is addig folytatjuk a törzstényezőre bontást míg a szám2 is 1-gyé válik.
A feladat megoldása:
// Legkisebb közös többszörös
private void button1_Click(object sender, EventArgs e)
{
int szám1, szám2, osztó1, osztó2, lktöbb= 0, sz;
if (textBox1.Text != "" && textBox2.Text != "")
{
szám1 = Int32.Parse(textBox1.Text);
szám2 = Int32.Parse(textBox2.Text);
if (szám1 > szám2)
{
sz = szám2; szám2 = szám1;
szám1 = sz;
}
if (szám1 > 1 && szám2 > 1)
{
lktöbb = 1;
while (szám1 != 1)
{
osztó1 = 2;
while (szám1 % osztó1 != 0)
osztó1++;
if (szám2 % szám1 == 0)
szám2 /= osztó1;
lktöbb *= osztó1;
szám1 /= osztó1;
}
while (szám2 != 1)
{
osztó2 = 2;
while (szám2 % osztó2 != 0)
osztó2++;
szám2 /= osztó2;
lktöbb *= osztó2;
}
}
else
MessageBox.Show("Az adat hibás!", "Üzenet");
textBox3.Text = "" + lktöbb;
}
}
// Ha az első adat változik, a korábbi eredmény törlődik
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox3.Text = "";
}
// Ha a második adat változik, a korábbi eredmény törlődik
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox3.Text = "";
}
A program futási eredményei: