Программа из книги Шилдта, небольшая загвоздка) - C#
Формулировка задачи:
Привет!) В книге Шилдта при объяснении методов с параметрами есть пример, в котором находится наименьший множитель двух чисел. Все просто, и код я понимаю, но программа не работает при условии, что одно из чисел равно 3. Вопрос: это я тупой или программ не предусмотрела это?) На всякий вложу сюда всю программу:
PS В книге другие числа, для числа 3 там НОК не вычисляется
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ParamTest1 { class IsPrimeTest { public bool IsPrime(int x) { if (x <= 1) return false; for (int i = 2; i <= x / i; i++) if ((x % i) == 0) return false; return true; } public int LeastComFactor (int a, int b) { int max; if (IsPrime(a) || IsPrime(b)) return 1; max = a < b ? a : b; for (int i = 2; i <= max/2; i++) //Вот тут, 3 пополам будет 1, и оператор for не выполняется { if (((a % i) == 0) && ((b % i) == 0) ) return i; } return 1; } } class Program { static void Main(string[] args) { IsPrimeTest ob = new IsPrimeTest(); for (int i = 2; i < 10; i++) if (ob.IsPrime(i)) Console.WriteLine("Число " + i + " простое"); else Console.WriteLine("Число " + i + " непростое"); int a = 45; int b = 3; Console.WriteLine("Наименьший общийн множитель числе " + a + " и " + b + " равен " + ob.LeastComFactor(a, b)); Console.ReadKey(); } } }
Решение задачи: «Программа из книги Шилдта, небольшая загвоздка)»
textual
Листинг программы
public double LeastComFactor(int a, int b) { int max = a < b ? a : b; for (double i = 2; i <= max; i++) //Вот тут, 3 пополам будет 1, и оператор for не выполняется { if (((a % i) == 0) && ((b % i) == 0)) return i; } return 1; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д