Нужна помощь в задаче(делители чисел) - C#
Формулировка задачи:
Доброго времени суток,есть такая задача(совсем недавно начал изучать C#) так что сильно не пинайте))если какаю-то чушь напишу)
Задача:
Найти натуральное число из интервала от а до b, у которого количество делителей максимально. Если таких чисел несколько, то должно быть найдено минимальное (максимальное) из них.А и В может быть как введенно с клавиатуры так и присвоенно в коде программы,для удобства я сразу присвоил
Метод решения таков,перебираем все нат. числа от А до В,в каждом числе ищем количество делителей и заносим это количество например в массив(1 элемент которого делители 1 числа) ну и потом сравниваем элементы массива находим наибольший и по индексу узнаем какое это было число и его выводим.(может алгоритм сильно запутан и таких сложностей ненадо...)
вот набросок
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { int a = 10; int b = 25; int i=a; int k,c; int max = 0; int[] m = new int[100]; for (i=a; i <= b;i++); // перебор чисел от А до В { for (k = 1; k <= i; k++) ; // находим кол-во делителей каждого числа { if (i % k == 0) ; { m[i]++;} // записываем кол-во делителей в массив } if (m[i] > max); // сравниваем элементы массива {max = m[i]; c = i;} // записываем индекс наибольшего значения } Console.WriteLine(c); Console.ReadKey(); } } }
Решение задачи: «Нужна помощь в задаче(делители чисел)»
textual
Листинг программы
using System; namespace test2{ class Numbers{ public int Number; public int Factors; public Numbers(int n, int f){ Number = n; Factors = f; } } class Program { public static void Main(string[] args) { int A = 10, B = 100; int count; Numbers[] nums = new Numbers[100]; int index = 0; for(int i = A; i <= B; i++){ count = 0; for(int j = 2; j <= i/2; j++){ if(i%j == 0) count++; } nums[index] = new Numbers(i, count); index++; } for(int i = 0; i < index; i++) Console.WriteLine("Число " + nums[i].Number + " делителей: " + nums[i].Factors); Console.WriteLine(); Numbers max = new Numbers(0,0); for(int i = 0; i < index; i++){ if(nums[i].Factors > max.Factors) max = nums[i]; } for(int i = 0; i < index; i++){ if((max.Factors == nums[i].Factors) & (max.Number < nums[i].Number)){ max = nums[i]; } } Console.WriteLine("Максимальное число " + max.Number + " с максимальным кол-вом делителей " + max.Factors); Console.ReadKey(true); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д