Страницы: 1
RSS
Следующее простое число
 
Приветствую всех!
Для одной из задач мне понадобился перечень простых чисел и вместо копирования готового списка я написал формулу для их определения.
Формула получилась громоздкой, и мне стало интересно можно ли её упростить при помощи современных возможностей MS Excel (я думал о динамических массивах). У меня самого ничего путного не получилось (отсюда-то и родился мой вариант со вложенными функциями ЕСЛИОШИБКА()...), но я надеюсь, что вы предложите более элегантное решение.
 
Именно формулой? Решений на VBA полно
Согласие есть продукт при полном непротивлении сторон
 
Вставьте в А2 как формулу массива и протяните вниз.
Код
=МИН(ОСТАТ(СТРОКА();СТРОКА($A1:A$2)))
или
Код
=(МИН(ОСТАТ(СТРОКА();СТРОКА($A1:A$2)))>0)*СТРОКА()
Изменено: МатросНаЗебре - 07.02.2025 15:23:38
 
Sanja, да, хотелось бы именно формулой - поскольку в макросах я разбираюсь гораздо хуже, а задача мне интересна именно в формате ликбеза...

МатросНаЗебре, Спасибо за варианты. Докладываю: первая формула возвращает нули или единицы (вероятно в строках с простыми номерами строк), а вторая формула возвращает нули и простые числа. Безусловно, полученные данные можно будет отсортировать формулами и отсеять нули, но для этого потребуется вспомогательные ячейки - а этого хотелось бы избежать.
 
Цитата
IKor:   я думал о динамических массивах
=ФИЛЬТР(ПОСЛЕД(1000;;3;2);МУМНОЖ(--(ОСТАТ(ПОСЛЕД(1000;;3;2);ПОСЛЕД(;1000;3;2))=0);ПОСЛЕД(1000;;1;0))=1)
можно последовательность увеличить, но без фанатизма
 
Павел \Ʌ/, Спасибо! Интересно! Буду разбираться уже в понедельник )))
 
Павел \Ʌ/, 2 не залетает
 
=A2+INDEX({2;4;6;8;10;12;14};MATCH(COUNT(A$2:A2);MMULT(--(TRANSPOSE(MOD(A2+{2\4\6\8\10\12\14};A$2:A2))>0);A$2:A2^0);))

не варит башка после рабочей недели. пока так, просто переложил то что было на иное но будет медленно.

=A2+INDEX({2;4;6;8;10;12;14};MATCH(0;MMULT(--(TRANSPOSE(MOD(A2+{2\4\6\8\10\12\14};A$2:A2))=0);A$2:A2^0);))
=A2+INDEX(ROW($1:$7)*2;MATCH(0;MMULT(--(MOD(A2+ROW($1:$7)*2;TRANSPOSE(A$2:A2))=0);A$2:A2^0);))
По вопросам из тем форума, личку не читаю.
 
Цитата
Тимофеев:  2 не залетает
не заморачивался с одним единственным чётным. )
собственно есть несколько способов добавить значение в массив...
...
например:
=LET(н_;ПОСЛЕД(7327;;;2);п_;н_+(н_=1);ФИЛЬТР(п_;МУМНОЖ(--(ОСТАТ(п_;ТРАНСП(п_))=0);п_^0)=1))
Изменено: Павел \Ʌ/ - 11.02.2025 12:23:44
 
Большое спасибо всем участвовавшим!
Открыл для себя ваш главный секрет: использование функции МУМНОЖ для построчного сложения элементов двумерного массива )
=========
Единственное, что вызывает вопрос - это разница символов ; и \ для разделения элементов массива
=A2+INDEX({2;4;6;8;10;12;14};...MOD(A2+{2\4\6\8\10\12\14};...)
В моей русской версии точка с запятой используется для разделения данных в одной строке и двоеточие - для разделения строк.
Предложенная функция МУМНОЖ готова работать с этими данными, только, если они записаны строкой, а ИНДЕКСу, разумеется, всё равно )))
Изменено: IKor - 10.02.2025 10:51:30
 
Цитата
IKor написал:
Единственное, что вызывает вопрос - это разница символов ; и \ для разделения элементов массива
это диктуется языком интерфейса и региональными. У меня Инт -Eng , Reg - RU.
Цитата
IKor написал:
Предложенная функция МУМНОЖ готова работать с этими данными, только, если они записаны строкой,
не совсем так, она готова работать с двумерной матрицей. но если уже заданы строки  ( A$2:A2)  то нужны столбцы, даже если потом транспонировать.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх