Программа из книги Шилдта, небольшая загвоздка) - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д