Írjunk programot, amely egy egész szám törzstényezős alakjánál tömörebb, hatványkitevős alakban jelenítse meg az eredményt.
A törzstényezős alak kiíratásánál használható a tömörebb hatványkitevős alak:
64 = 2*2*2*2*2*2 = 2^6
576 = 2*2*2*2*2*2*3*3 = 2^6*3^2
A feladat megoldása:
// Törzstényezők kiírása hatványkitevős alakban
private void button1_Click(object sender, EventArgs e)
{
int szám, osztó, előzö, hatv;
bool első = true;
string s = "";
if (textBox1.Text != "")
{
szám = Int32.Parse(textBox1.Text);
if (szám > 0)
{
előzö = 2; hatv = 0;
while (szám != 1)
{
osztó = 2;
while (szám % osztó != 0)
{
osztó++;
}
if (első)
{
előzö = osztó;
s += osztó;
első = false;
}
if (előzö == osztó)
hatv++; // azonos osztó esetén
// növeljük hatv értékét
else
{
if (hatv > 1)
{
// hatv kiírásra kerül és
// az osztó is
s += "^" + hatv + "*" + osztó;
hatv = 1; // újra 1 hatv értéke
}
else
s += "*" + osztó; // új osztó kiírása
}
szám = szám / osztó;
if (szám == 1 && előzö == osztó && hatv > 1 )
s += "^" + hatv; // utolsó kiírás
előzö = osztó; // előzö beállítása
}
textBox2.Text = s;
}
else
MessageBox.Show("Hibás adat!", "Üzenet");
}
}
// Ha az adat változik a korábbi eredmény törlődik
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = "";
}
A program futási eredményei: