26 Mart 2013 Salı

55 - While Döngüsü... EBOB Bulma...


EBOB u bulmaya çalışıyoruz... EBOB'u bulurken kullandığımız mantık ise şöyle; 

Öncelikle girilecek olan sayıların sıfırdan büyük girilmesi gerekiyor... Bunu While döngüsünün şartında kontrol ettiriyoruz... 2. aşama da ise en küçük olan sayıyı buluyoruz ve bu sayıdan itibaren 1 e kadar, iki sayımıza da MOD aldırıyoruz... 

İf şartı ile birlikte MOD alma işlemini yaptırmış oluyoruz... Eğer her iki sayımızı da ortak bölen bir sayı varsa onu EBOB ilan ediyoruz ve döngüyü bitirip sonucu gösteriyoruz... 

Programımızın bir hatası var... O da eğer 1 e kadar bölen bir ortak sayı bulamazsak o zaman hata verdirmemiz veya bir mesaj vermemiz gerekiyor... O kısmı da size bırakıyorum... 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int sayi_1 = Convert.ToInt32(Console.ReadLine());
            int sayi_2 = Convert.ToInt32(Console.ReadLine());
     
            int bolen = sayi_2;  // sayi 2 küçükse en büyük bölen olarak sayi2 alınacak...
            if(sayi_2>sayi_1)    // ama sayi 2 büyükse bu durumda en büyük bölen için sayi 1 kullanılacaktır... 
                 bolen = sayi_1; // eğer her ikisi eşit ise zaten sayi2 olmasında mahsur yoktur... 

            bool bitir = true; // Ebob bulunduğu anda döngüyü bitirmek için kullanıyoruz... 

            // Amaç bu döngüye her koşulda girmek... Onun için girilen sayıların 1 den büyük olması yeterli...
            while ((sayi_1 > 1 || sayi_2 > 1) && bitir==true)  
            {
                if (sayi_1 % bolen == 0 && sayi_2 % bolen == 0) // Sayılarımızın ortak bölenlerini bulmaya çalışıyoruz... 
                {
                    bitir = false; // Ortak bölen bulunduysa döngüyü bitirmek için kullanıyoruz... 
                    Console.WriteLine("obeb = " + bolen); // Sonucu gösteriyoruz... 
                }
                else
                    bolen--; // Sayılarımız büyükten küçüğe doğru kontrol ediliyor... 
            }
            
            Console.ReadKey();
        }
    }
}