Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
Всем доброго времени суток! Появился такой вопрос по заданию (приводится решение на Pascal, но возможно ли решить в Excel?):
...
"Найдите среди целых чисел, принадлежащих числовому отрезку [174457;174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в две соседних столбца на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке также должны следовать в порядке возрастания.

Например, в диапазоне [5;9] ровно два различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона вывод на экране должна содержать следующие значения:

2 3

2 4"
...
Всем заранее спасибо!
8 мар 21, 00:08    [22291013]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22390
Awerasder
приводится решение на Pascal, но возможно ли решить в Excel?
Наверняка
8 мар 21, 00:43    [22291015]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
Shocker.Pro, а можете подсказать решение? Меня ж оно и интересует как раз.
8 мар 21, 08:55    [22291039]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22390
Если уже есть решение на паскале, зачем писать еще одно на бейсике, не проще ли перевести?
8 мар 21, 11:53    [22291091]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
Shocker.Pro, а разве обязательно с помощью программирования? Разве нет формул, которые бы позволяли найти все делители для какого-либо числа?
8 мар 21, 13:34    [22291129]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22390
Может быть. Ну тогда это больше на форум математиков, чем на форум программистов, разве нет?

ну или так
8 мар 21, 13:41    [22291133]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
Shocker.Pro, так мне нужно в excel.Да и если бы я не пользовался поисковиком ,меня бы не закинуло на этот форум.
8 мар 21, 14:35    [22291160]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22390
Непонятно, что от экселя нужно конкретно
1) найти встроенную функцию, которая сама все сделает
2) реализовать задачу в виде формул, используя математические подходы к решению этой задачи
3) то же самое, но на VBA (ну вроде этот пункт отбросили)
8 мар 21, 14:38    [22291163]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
Shocker.Pro, нужен метод, настроенный именно на Excel, т.е с помощью встроенных в него функций.
8 мар 21, 21:13    [22291278]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1990
Awerasder,

Если исходный диапазон чисел можно записывать в Excel поочередно, вроде такого:
5
6
7
8
9
то сделать можно при помощи той же ОСТАТ(+ еще пара функций). пример решения приложил(используется формула массива, если что).

Если выводить исходные числа запрещено - это формулами делать будет уже слишком сложно(если вообще получится).

К сообщению приложен файл (Awerasder.xlsx - 9Kb) cкачать
9 мар 21, 13:13    [22291602]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
Awerasder
Member

Откуда:
Сообщений: 6
The_Prist, спасибо большое! Всё отлично работает для заданного мною диапазона, ответы выбираются легко. Можете лишь подробнее объяснить функцию, которую ввели?
К слову, можете вывести функцию для нахождения также не только для натуральных делителей, но и для простых? Буду премного благодарен!
9 мар 21, 21:33    [22292004]     Ответить | Цитировать Сообщить модератору
 Re: Обработка целочисленной информации - нахождение делителей для чисел из отрезка и их кол-во  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1990
Awerasder
подробнее объяснить функцию
тут сложно объяснять, не зная Вашего уровня.
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ОСТАТ($A2;СТРОКА(ДВССЫЛ("2:"&$A2-1)))=0;СТРОКА(ДВССЫЛ("2:"&$A2-1)));СТОЛБЕЦ(A2));"")
Это формула массива. Вводится тремя клавишами: Ctrl+Shift+Enter.

основная функция ОСТАТ. Она определяет те числа, на которые можно поделить указанное число без остатка(или показывает этот остаток). Если она равна 0 - значит без остатка. Фактически, для числа 6 она должна выглядеть так:
=ОСТАТ(6;2)
Но т.к. нам нужны все делители(а не только 2), то мы должны задать там диапазон чисел от 2 до 5(чтобы не делить на 1 и на само число). Просто так диапазон задать можно так
{2:3:4:5}
, но в таком случае мы лишены возможности динамически изменить кол-во и верхний предел этих делителей. поэтому применяем функцию СТРОКА(2:5) и ДВССЫЛ для того, чтобы второе число в функции СТРОКА было всегда на 1 меньше самого числа, которое проверяем. Поэтому получается так:
СТРОКА(ДВССЫЛ("2:"&$A3-1)
т.е.
СТРОКА(ДВССЫЛ("2:5")
и как итог у нас получается конструкция:
ОСТАТ($A3;СТРОКА(ДВССЫЛ("2:"&$A3-1)))
эту функцию мы проверяем на 0. Если равна нулю - то возвращаем наш делитель(
СТРОКА(ДВССЫЛ("2:"&$A3-1))
), если нет - пропускаем, составляя таким образом массив только нужных нам чисел и логического ЛОЖЬ.
При помощи функции НАИМЕНЬШИЙ и функции СТОЛБЕЦ() вытягиваем по очереди полученные числа.
Ну а ЕСЛИОШИБКА нужна для того, чтобы при растягивании формулы и получении ошибки #ЧИСЛО!(которое нам вернет НАИМЕНЬШИЙ, когда нужных чисел нет или они закончились), убрать эту самую ошибку.

Awerasder
вывести функцию для нахождения также не только для натуральных делителей, но и для простых
Если мне не изменяет мой склероз, то здесь надо будет проверять каждый делитель на то, является ли он простым числом...А это уже итерация другого уровня и для формул не самая удобная. Тут городить надо не самый простой огород.
10 мар 21, 16:18    [22292500]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить