4. oldal / 11
23. tétel: Legnagyobb közös osztó
Feladat: Kérjen be a billentyűzetről két egész számot és számolja ki tetszőleges módszerrel a legnagyobb közös osztójukat, majd írja is ki azt a képernyőre.
Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 23tetel { class Program { static int beker() { string s = Console.ReadLine(); return (Convert.ToInt32(s)); } static void Main(string[] args) { //23. tétel: Legnagyobb közös osztó – Euklídeszi algoritmus Console.WriteLine("Ez a program két pozitív egész szám legnagyobb közös osztóját számolja ki"); Console.Write("Kérem az 1. számot: "); int szamx = beker(); Console.Write("Kérem a 2. számot: "); int szamy = beker(); Console.WriteLine("A beolvasott két szám: {0} és {1}", szamx, szamy); if (szamy>szamx) { int csere = szamx; szamx = szamy; szamy = csere; } //Console.WriteLine("A nagyobb szám: {0}; a kisebb szám: {1}.", szamx, szamy); bool megvan = false; //Megvan-e a végeredmény? int hanyados; do { hanyados = szamx % szamy; if (szamy*hanyados == szamx) //Ekkor pontosan osztható! { megvan = true; } szamx = szamy; szamy = hanyados; //Console.WriteLine("x:{0} y:{1} hanyados: {2}", szamx, szamy, hanyados); if (hanyados == 0) { megvan = true; } } while (megvan==false); Console.WriteLine("A két szám legnagyobb közös osztója: {0}", szamx); if (szamx == 1) { Console.WriteLine("Tehát a két szám relatív prím!"); } Console.WriteLine("\n\nA program futása véget ért!"); } } }