Нужно в EXCELL без использования макросов сделать тест на "простоту" числа в заданной ячейке (например C8). Простое число - это то, которое имеет два делителя, т.е делится без остатка только на 1 и на само себя (малая теорема Ферма). Если бы можно было с макросами, то было бы проще. Нашел в интернете вариант записи, но разобраться в нем сам не могу. Помоги плз - вопрос очень срочный - решить его надо максимум до 8-00МСК 18.12.2013 Запись найденная в интернете: {=IF(OR(C8=2,C8=3),"prime",IF(AND((MOD(C8,ROW(INDIRECT("2:"&C8-1)))<>0)),"prime","not prime"))} Кто сможет дать вариант решения проще - буду рад ему с объяснениями? Или готов оплатить за подробное и доходчивое объяснение работы этого варианта?
Нужно в EXCELL без использования макросов сделать тест на "простоту" числа в заданной ячейке (например C8). Простое число - это то, которое имеет два делителя, т.е делится без остатка только на 1 и на само себя (малая теорема Ферма). Если бы можно было с макросами, то было бы проще. Нашел в интернете вариант записи, но разобраться в нем сам не могу. Помоги плз - вопрос очень срочный - решить его надо максимум до 8-00МСК 18.12.2013 Запись найденная в интернете: {=IF(OR(C8=2,C8=3),"prime",IF(AND((MOD(C8,ROW(INDIRECT("2:"&C8-1)))<>0)),"prime","not prime"))} Кто сможет дать вариант решения проще - буду рад ему с объяснениями? Или готов оплатить за подробное и доходчивое объяснение работы этого варианта?eugene407
дает №№строк со 2 по число в ячейке С8-1.если число к примеру 10 то получится СТРОКА2 СТРОКА9.ОСТАТ.это остаток от деления числа в ячейке С8 на строку 2-9,то есть на наших баранах это остаток от деления 10 на 2,3,4,....9.и если этот остаток <>0,то число простое.а если хоть один остаток равен 0,то число не простое.как в случае с 10.10/2=5.остаток 0.ЛОЖЬ=>число не простое. фу 7 потов сошло.надеюсь понятно объяснил ЗЫ.господа асы Экселя если что не так,поправьте
попробую.
Код
СТРОКА(ДВССЫЛ("2:"&C8-1))
дает №№строк со 2 по число в ячейке С8-1.если число к примеру 10 то получится СТРОКА2 СТРОКА9.ОСТАТ.это остаток от деления числа в ячейке С8 на строку 2-9,то есть на наших баранах это остаток от деления 10 на 2,3,4,....9.и если этот остаток <>0,то число простое.а если хоть один остаток равен 0,то число не простое.как в случае с 10.10/2=5.остаток 0.ЛОЖЬ=>число не простое. фу 7 потов сошло.надеюсь понятно объяснил ЗЫ.господа асы Экселя если что не так,поправьтекитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Вторник, 17.12.2013, 14:39
"Просто́е число́ — это натуральное число, имеющее ровно два различных натуральных делителя: единицу и само себя" - Википедия То есть, другими словами, остаток от деления этого числа (Х) на любое число, начиная с 2 и заканчивая Х-1 не должен быть равен нулю а) ДВССЫЛ("2:"&C8-1) как раз дает нам массив из ячеек строк со 2-й по (Х-1)-ю Правда, я бы написал ДВССЫЛ("A2:A"&C8-1) - немного больше букв, но зато массив получается только из ячеек столбца А строк со 2-й по (Х-1)-ю б) СТРОКА(ДВССЫЛ("2:"&C8-1)) дает нам номера строк ячеек из п. а) в) (ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1)))<>0 - делим наше число Х на полученное в п.б) и смотрим, равен ли полученный остаток нулю. Если не равен, то ИСТИНА, если не равен, то ЛОЖЬ. И так для каждого числа из п.б) г) И(куча каких-то значений) - если хоть одно значение из кучи равно ЛОЖЬ, то вся И(куча каких-то значений) равна ЛОЖЬ. Т.е., если хоть одно значение из п.в) = ЛОЖЬ, то вся конструкция И(ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1))<>0)) равна ЛОЖЬ, иначе - конструкция равна ИСТИНА д) ЕСЛИ(И(ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1)))<>0);"prime";"not prime") - это, я уверен, Вам и без меня понятно. Если в п.г) ЛОЖЬ, то есть, мы нашли какое-то число, на которое без остатка делится наше Х, то, следовательно, Х - не простое число. Если не нашли такого делителя, то простое. е) Исключения составляют только число 2 - оно простое по определению Поэтому, просто переписываем формулу так:
Кстати, массивный ввод (это фигурные скобочки у Вас в формуле) теперь не нужен. А вот это я зря написал. Нужен.
"Просто́е число́ — это натуральное число, имеющее ровно два различных натуральных делителя: единицу и само себя" - Википедия То есть, другими словами, остаток от деления этого числа (Х) на любое число, начиная с 2 и заканчивая Х-1 не должен быть равен нулю а) ДВССЫЛ("2:"&C8-1) как раз дает нам массив из ячеек строк со 2-й по (Х-1)-ю Правда, я бы написал ДВССЫЛ("A2:A"&C8-1) - немного больше букв, но зато массив получается только из ячеек столбца А строк со 2-й по (Х-1)-ю б) СТРОКА(ДВССЫЛ("2:"&C8-1)) дает нам номера строк ячеек из п. а) в) (ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1)))<>0 - делим наше число Х на полученное в п.б) и смотрим, равен ли полученный остаток нулю. Если не равен, то ИСТИНА, если не равен, то ЛОЖЬ. И так для каждого числа из п.б) г) И(куча каких-то значений) - если хоть одно значение из кучи равно ЛОЖЬ, то вся И(куча каких-то значений) равна ЛОЖЬ. Т.е., если хоть одно значение из п.в) = ЛОЖЬ, то вся конструкция И(ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1))<>0)) равна ЛОЖЬ, иначе - конструкция равна ИСТИНА д) ЕСЛИ(И(ОСТАТ(C8;СТРОКА(ДВССЫЛ("2:"&C8-1)))<>0);"prime";"not prime") - это, я уверен, Вам и без меня понятно. Если в п.г) ЛОЖЬ, то есть, мы нашли какое-то число, на которое без остатка делится наше Х, то, следовательно, Х - не простое число. Если не нашли такого делителя, то простое. е) Исключения составляют только число 2 - оно простое по определению Поэтому, просто переписываем формулу так: