C# programok ismertetése érdeklődőknek kezdőktől haladókig

C# MŰHELY

C# MŰHELY

Két egész szám legnagyobb közös osztója 1. megoldás

2020. június 18. - Benkő Tiborné

1. megoldás  while ciklussal

Algoritmus készítés

 Az algoritmushoz készítsünk kézi számolást! Határozzuk meg 16 és 40 legna­gyobb közös osztóját. A két szám közül kiválasztjuk a kisebbet, majd 2-től egyesével növelve a kisebb szám-ig a két szám közös osz­tóit meghatározzuk. 

16      osztói:       2     4             8     16
40      osztói:       2     4     5      8
közös osztók     2     4             8

 Tehát a 16 és 40 egész számoknak 8 a legnagyobb közös osztója.

 A program megtervezése:

  • A program megírásához szükségünk lesz négy változóra:

            szám1,szám2   tárolja a két számot, melynek a legnagyobb
                                     közös  osztóját keressük,

            osztó                tartalmazza az aktuális osztót,

            közös               az aktuális közös osztó tárolására szolgál.

  • A szám1 és szám2 változókba beolvassuk a két egész számot.
  • Az osztó kezdőértéke 2, innen indul az oszthatóság vizsgálat.
  • A közös változó kezdőértéke 0, ha értéke nullánál nagyobb lesz,
    azt je­lenti, hogy a két számnak van közös osztója, az utoljára
    felvett érték lesz a legna­gyobb közös osztó.

        A while ciklus addig működik, míg az osztó kisebb a kisebbik számnál, 
        legyen az akár a szám1 vagy a szám2.

           (osztó <= szám1 && osztó <= szám2)       

  • A ciklus magja megvizsgálja, hogy az osztó mindkettő osztója-e:

           (szám1 % osztó = 0 && szám2 % osztó = 0)     

        Ha a feltétel teljesül, akkor a közös változó felveszi az osztó értékét

  • Gondoskodni kell a ciklusban az osztó változó növeléséről:

          osztó++;

  • A ciklus működésének befejezése után a közös változó tartalma dönti el,
    hogy találtunk legnagyobb közös osztót (közös>0), vagy nem (közös==0).

A feladat megoldása:

                    // Legnagyobb közös osztó keresése
        private void button1_Click(object sender, EventArgs e)
        {
            int szám1, szám2, osztó, közös= 0;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                szám1 = Int32.Parse(textBox1.Text);
                szám2 = Int32.Parse(textBox2.Text);
                osztó = 2;
                közös = 0;
                while (osztó <= szám1 && osztó <= szám2)
                {
                    if(szám1 % osztó == 0 && szám2 % osztó == 0)
                        közös = osztó;
                    osztó++;
                }
                if (közös == 0)
                    textBox3.Text =
                        "Nincs legnagyobb közös osztójuk.";
                else
                    textBox3.Text = "" + közös;
            }
        }

        // 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:

     

 

 

 

 

 

A bejegyzés trackback címe:

https://csharp-muhely.blog.hu/api/trackback/id/tr1315823650

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása