задача за НОД
Здравейте,
имам нужда от помощ за да разбера как програмата изпълняеа кода на тази задача ред по ред.
class Program
{
static void Main(string[] args)
{
var a = int.Parse(Console.ReadLine());
var b = int.Parse(Console.ReadLine());
while (b != 0)
{
var temp = b;
b = a % b;
a = temp;
}
Console.WriteLine(a);
}
Ако в началото зададем стойности 100 и 88 за А и Б
когато програмата влезе в WHILE-цикала на колко първоначано са равни А и Б.
Опитах да го напиша на един лист МНОГО ПЪТИ и пак не хващам логиката вътре в цикъла.
Много благодаря ако някой отговори!
Благодаря за отговора.
Можеш ли да опишеш как се получават тези стойности. Това което искам да кажа:
Въвеждаме две числа от конзолата А и В (100 88)
програмата влиза в цикъла
правим нова променлива "temp" която казваме че е равна на В (предполагам че тук стойността е 88 т.е. първоначалната)
при следващият ред "b = a % b;" (100 % 88) новата стойност на b се записва в променливата "temp" (ако не греша)
накрая казваме че стойността на "а" е равна на "temp"
Можеш ли да ми кажеш как при второто завъртане на цикъла "b" взема стойност 4.
Новата стойност на b не се записва никъде, тя си е в b
temp съхранява старата стойност на b, докато b получи новата стойност, след което старата стойност на b, ( временно съхраняванва в temp ) отива в а.
1.
var a = int.Parse(Console.ReadLine()); // a =100
var b = int.Parse(Console.ReadLine()); // b=88
2.
var temp = b; // temp = 88
b = a % b; // b = 12
a = temp; // a =88
3.
var temp = b; // temp = 12
b = a % b; // b = 4
a = temp; // a =12
4.
var temp = b; // temp = 4
b = a % b; // b = 0
a = temp; // a =4
Много ти благодаря !