Программа из книги Шилдта, небольшая загвоздка) - C#

Узнай цену своей работы

Формулировка задачи:

Привет!) В книге Шилдта при объяснении методов с параметрами есть пример, в котором находится наименьший множитель двух чисел. Все просто, и код я понимаю, но программа не работает при условии, что одно из чисел равно 3. Вопрос: это я тупой или программ не предусмотрела это?) На всякий вложу сюда всю программу:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ParamTest1
  7. {
  8. class IsPrimeTest
  9. {
  10. public bool IsPrime(int x)
  11. {
  12. if (x <= 1) return false;
  13. for (int i = 2; i <= x / i; i++)
  14. if ((x % i) == 0) return false;
  15. return true;
  16. }
  17. public int LeastComFactor (int a, int b)
  18. {
  19. int max;
  20. if (IsPrime(a) || IsPrime(b)) return 1;
  21. max = a < b ? a : b;
  22. for (int i = 2; i <= max/2; i++) //Вот тут, 3 пополам будет 1, и оператор for не выполняется
  23. {
  24. if (((a % i) == 0) && ((b % i) == 0) ) return i;
  25. }
  26. return 1;
  27. }
  28. }
  29.  
  30. class Program
  31. {
  32. static void Main(string[] args)
  33. {
  34. IsPrimeTest ob = new IsPrimeTest();
  35. for (int i = 2; i < 10; i++)
  36. if (ob.IsPrime(i)) Console.WriteLine("Число " + i + " простое");
  37. else Console.WriteLine("Число " + i + " непростое");
  38. int a = 45; int b = 3;
  39. Console.WriteLine("Наименьший общийн множитель числе " + a + " и " + b + " равен " + ob.LeastComFactor(a, b));
  40. Console.ReadKey();
  41. }
  42. }
  43. }
PS В книге другие числа, для числа 3 там НОК не вычисляется

Решение задачи: «Программа из книги Шилдта, небольшая загвоздка)»

textual
Листинг программы
  1.  public double LeastComFactor(int a, int b)
  2.         {
  3.              int max = a < b ? a : b;
  4.  
  5.             for (double i = 2; i <= max; i++) //Вот тут, 3 пополам будет 1, и оператор for не выполняется
  6.             {
  7.                 if (((a % i) == 0) && ((b % i) == 0)) return i;
  8.             }
  9.             return 1;
  10.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы