Здравствуйте! Как определить простое ли число или составное в эксель без VBA?!
Определить простое ли число или составное (без VBA)
27.12.2016 11:32:54
|
|
|
|
27.12.2016 12:33:27
Добрый день. Вот такое соорудил, только на 1 выдает ошибку.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
|
|
|
|
27.12.2016 12:34:46
Можно как-то так формулой массива:
P.S. Добавил проверку на 1
В В1 - исследуемое число.
Изменено:
Кому решение нужно - тот пример и рисует.
|
|||
|
|
27.12.2016 12:51:24
|
|||
|
|
27.12.2016 13:10:27
формула для больших чисел (больше 2^20):
=ЕСЛИ(И(ОСТАТ(A1;СТРОКА(СМЕЩ($A$2;;;A1^0,5)))<>0)+(A1<4);"Простое";"Составное") l |
|
|
|
27.12.2016 13:10:41
Формула массива:
=ЕСЛИ(A1<4;"Простое";ЕСЛИ(И(ОСТАТ(A1;СТРОКА(A2:ИНДЕКС(A:A;A1-1)))<>0);"Простое";"Составное")) |
|
|
|
28.12.2016 00:46:05
Однако, формула возвращает #ЧИСЛО! уже при 268'435'456, т.е. при 2^28 ![]() Как я выяснил, это связано с ограничением функции ОСТАТ(х;у) - результат деления х/у должен быть меньше 2^27=134'217'728! То есть ОСТАТ(134217727,9999;1) =0,9999, а ОСТАТ(134217728;1) =#ЧИСЛО! ОСТАТ(2^27*3-1;3) =2, а ОСТАТ(2^27*3;3) =#ЧИСЛО! и т.д. Можно переписать формулу, не используя функцию ОСТАТ, тогда она действительно работает до 10^12, формула массива
|
|||||
|
|
28.12.2016 08:45:27
UDF, которая достаточно быстро раскладывает на простые множители пятнадцатизначные числа (опубликовано
Изменено: |
|||
|
|
28.12.2016 09:35:33
Bema, спасибо за пример, а если заменить =2 на <=2 это проблему с 1 не решит?
|
|
|
|
28.12.2016 09:40:11
Дополнительная проверка на еденицу решит проблему.
=ЕСЛИ(A1=1;"Простое";ЕСЛИ(СУММ(--((ОСТАТ(A1;СТРОКА($B$1:СМЕЩ($B$1;A1-1;))))=0))=2;"Простое";"Составное")) И формула работает до числа 65536, по количеству строк на листе Эксель.
Изменено:
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
|
|
|
|
28.12.2016 12:33:50
Bema, ну это как-то не изящно, надо добавлять 15 символов. Кстати 65536 можно увеличить до 1млн в новом экселе
|
||||
|
|
|||
Читают тему