D
D
dadster2014-02-05 05:39:45
Algorithms
dadster, 2014-02-05 05:39:45

Please criticize my noob code (algorithm for finding the greatest common divisor of 2 numbers, c#)

Hey!
I just started learning programming, I will be grateful for criticism from experienced comrades in terms of:
1) in what places is the program "clumsy", what hurts your eyes?
2) what is generally not acceptable and clearly needs to be done differently?
3) is it possible to implement something easier?
I asked this question because I want to immediately learn how to do "the right way."
Thank you!
ps If you advise not to bother, but just continue to write code, I will also listen.

using System;
class euclid
{
  static void Main ()
  {
    Console.WriteLine( " Привет, я алгоритм Эвклида и готов сделать для вас кой-какую грязную работенку!");
    
    //вводим два числа в строковом формате, превращаем их в числа типа int
    Console.WriteLine( " Введите первое целое число: ");
    string firstNumberString = Console.ReadLine();
    int firstNumber = int.Parse(firstNumberString);
    
    Console.WriteLine( " Введите второе целое число: ");
    string secondNumberString = Console.ReadLine();
    int secondNumber = int.Parse(secondNumberString);
    
    //сравниваем числа, если первое больше второго, то меняем их местами, таким образом второе получается всегда больше первого либо равно ему)
    if (firstNumber > secondNumber)
    {
      int tempNumber = firstNumber;
      firstNumber = secondNumber;
      secondNumber = tempNumber;
    }
    
    //проверяем самый простой случай - если число 2 делится на число 1 без остатка, т.е. число 1 и является наибольшим общим делителем. 
    if (secondNumber % firstNumber == 0)
    {
      Console.WriteLine("Вы ввели числа: {0} и {1}. Наибольший общий делитель: {0}", firstNumber, secondNumber);
      Console.ReadLine();
    }
    
    else 
    
    //вычисляем остаток от деления, и пока остаток не равен нолю выполням цикл Евклида. Как только остаток равняется нолю, выводим предыдущее его сохраненное значение.
    {
      int remainder = secondNumber % firstNumber;
      int formerSecondNumber = firstNumber;
      int storedRemainder = 0;
      while (remainder != 0)
      {
        storedRemainder = remainder;
        remainder = formerSecondNumber % remainder;
        formerSecondNumber = storedRemainder;
      }
      Console.WriteLine("Вы ввели числа: {0} и {1}. Наибольший общий делитель: {2}", firstNumber, secondNumber, storedRemainder);
      Console.ReadLine();
    }
    
    
  }


}

Answer the question

In order to leave comments, you need to log in

3 answer(s)
R
Rsa97, 2014-02-05
@dadster

while (second != 0) {
    reminder = first % second;
    first = second;
    second = reminder;
}
nod = first;

D
dadster, 2014-02-05
@dadster

Thanks for the advice!
Yes, with comments I need to moderate my ardor ...
// it was getting dark ..

D
dadster, 2014-02-05
@dadster

Thanks everyone for the advice, very informative!
next time I will first google for the best solutions, then ask.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question