Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

"girilen bir sayının obebini bulan program" işleminin sonucu hep 1 çıkıyor

//Girilen sayının OBEB'ini bulan program by Ertuğrul ÇOBAN

            int sayi_1, obeb = 1, bolen = 2;
            
            Console.WriteLine("");            

            Console.Write("\nBirinci sayıyı giriniz:");             sayi_1 = Convert.ToInt32(Console.ReadLine());             Console.WriteLine();             Console.WriteLine("===========================");             Console.WriteLine("===========================");
            while (sayi_1 > 1)             {                 if (sayi_1 % bolen == 0  && bolen == 0)                 {                     obeb *= bolen;                     sayi_1 /= bolen;                                     }                 else if (sayi_1 % bolen == 0)                 {                     sayi_1 /= bolen;                 }                                 else                 {                     bolen++;                 }             }                                     Console.Write("\nGirilen sayının OBEB'i: {0}", obeb);                                       Console.ReadKey();

Soran:05.05.18 22:31
misafir  

1 Cevap

0
Alttaki aynı işi yapar:

  public static int OBEB(int x1, int x2) {
      if (x1 < 0 || x2 < 0) {
          throw new ArgumentException("Sayılardan birisi negatif olamaz.");
      }
      int a, b, g, z;


      if (x1 > x2) {
          a = x1;
          b = x2;
      } else {
          a = x2;
          b = x1;
      }


      if (b == 0) return 0;


      g = b;
      while (g != 0) {
          z= a % g;
          a = g;
          g = z;
      }
      return a;
  }

Veya daha kısa bir şekli:

    static int OBEB(int a, int b)
    {
        int kalan;
    
        while( b != 0 )
        {
            kalan = a % b;
            a = b;
            b = kalan;
        }
      
        return a;
    }

Bu da OKEK. Belki lazım olur:

    public static int OKEK(int a, int b)
    {
        int num1, num2;
        if (a > b)
            num1 = a; num2 = b;
        else
            num1 = b; num2 = a;


        for (int i = 1; i < num2; i++)
        {
            if ((num1 * i) % num2 == 0)
            {
                return i * num1;
            }
        }
        return num1 * num2;
    }
Bu da kısa OBEB örneği kullanılarak OKEK:

static int OBEB(int a, int b)
{
    while (b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

static int OKEK(int a, int b)
{
    return (a / OBEB(a, b)) * b;
}
Kaynak: https://stackoverflow.com/questions/13569810/least-common-multiple


Cevaplayan: 07.05.18 12:34
cevapsitesi
101,155p 10ü