LINUX.ORG.RU

Можно ли математически определить чётность числа?

 , , ,


0

3

Есть такая задачка. Вероятно, решения она не имеет.

Как из любого целого N сделать -1, если оно нечётное или 1, если оно чётное.
Можно использовать само N, константы (любые целочисленные или с плавающей запятой). Доступны сложение, вычитание, умножение, деление (настоящее).

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Ответ на: комментарий от beastie

но с exp и log

В условии нет.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от anonymous

какие «уже определённые» циклы имеются

Сложение, вычитание, умножение, деление без остатка. Никакого рояля.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

Нет, отсутствуют. Пойду попробую синусоиду нарисовать через какую-нибудь хитрую жопу.

CYB3R ★★★★★
() автор топика

Вероятно, решения она не имеет.

Начинать надо было с того, что она не имеет условия.

quowah
()
Ответ на: комментарий от CYB3R

А привычное целочисленное деление и остаток от деления использовать нельзя.
деление без остатка

Путаетесь в показаниях?

ziemin ★★
()
Ответ на: комментарий от anonymous

Откуда бомжу из Федеративной Республики Германия знать русскоязычные аббревиатуры математических дисциплин, о которых он отдалённо что-то слышал?

aedeph_ ★★
()
Ответ на: комментарий от templarrr

А там есть возведение в степень, не подходит.

чувак, ты хоть полсекунды подумал, прежде чем писать?

возведение в конечную целую степень — это умножение

да, конечно, ряд тейлора без циклов будет работать только для конечного числа значений N

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от anonymous

Так в условии задано (это раз). При написании программы я сам задал N, себе я верю (это два).
Доволен?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от ziemin

Просто деление. Я не знаю, как его назвать, потому назвал «делением без остатка» в противоположность делению с остатком.
Я имел ввиду это, а не это деление.

CYB3R ★★★★★
() автор топика

Заводы стоят, коровы не доены, математики всех стран даже постоянную дивана найти не могут, а его какая-то ерунда волнует.

redgremlin ★★★★★
()
Ответ на: комментарий от CYB3R

Теоретически все четыре операции дают рациональную функцию, а требуется ступенчатая. Так что нужна ещё одна операция как минимум.

А в общем, я так понимаю, это подзадача какой-то большей задачи? И что за язык?

ziemin ★★
()
Ответ на: комментарий от ziemin

Теоретически все четыре операции дают рациональную функцию, а требуется ступенчатая. Так что нужна ещё одна операция как минимум.

Хорошее объяснение. Я, конечно, ничего не понял, но звучит очень умно и убедительно.

А в общем, я так понимаю, это подзадача какой-то большей задачи? И что за язык?

Язык самопальный наколеночный. Большая задача — создание простенького чертежа при помощи такого макроса.
Я сделал хитрое и перегруженное решение, потом решил, что можно было бы вообще это сделать в две строчки, если уменьшить шаг в два раза и развернуть (помножить на -1) все нечётные итерации.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от ziemin

Теоретически все четыре операции дают рациональную функцию, а требуется ступенчатая.

Не ступенчатая, а всего лишь принимающая -1 или 1 при целом аргументе. Так что, хоть полином при ограниченном N, хоть длинный ряд из косинуса для условно неограниченном — вполне решения. Разве что ряд должен быть либо бесконечным, либо надо знать, с какой точностью приближать.

monk ★★★★★
()
Ответ на: комментарий от monk

либо надо знать, с какой точностью приближать

Нет округления, значит 0.9999999999999999999999999999999 уже не подходит. Боюсь, что ряд получится уж больно большим а точность будет зависеть от машинной точности.

ziemin ★★
()
Ответ на: комментарий от templarrr

ТС же выше писал, что возведение в степень не доступно.

недоступно возведение в заранее неизвестную степень, очевидно же

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от CYB3R

если известно, что N реально представлено 4-байтным флоатом, скажем, и способ округления, то без проблем можно, играя на точности, получить последний двоичный разряд

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от dimon555

Считается, что N целое положительное.

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Если это наколенное поделие, то выпрями его или выкинь, чтобы не заниматься хаками, костылями и дрочнёй на уровне класса коррекции в лепрозории. Ты же программист, а не тупой школьник, даже обоснованное мнение имеешь.

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

Я могу, конечно, написать патч, добавляющий возведение в степень. Но формат уже описан. Совместимость поломается.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Что бы это ни было, это неприменимо для возникающих задач.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Кем описан формат, кому нужна совместимость с говном и почему его нельзя выкинуть?

И почему при добавлении функциональности поломается совместимость, ты совсем не компетентен, что ли?

aedeph_ ★★
()

остаток от деления на 2 не катит?

mm3 ★★★
()
Ответ на: комментарий от CYB3R

11 / 2 = 5.5

что-то мне подсказывает что для целых чисел операция деления не так выглядит.

нечётное
(2*n + 1)
1. Делим на 2
n + 1/2
2. отнимаем n
n + 1/2 - n = 1/2
3. умножаем на -4
1/2 * (-4) = -2
4. прибавляем 1
-2 + 1 = -1

чётное
(2*n)
1. /2
n
2. -n
0
3. * -4
0 * (-4) = 0
4. +1
1
dimon555 ★★★★★
()
Ответ на: комментарий от aedeph_

почему при добавлении функциональности поломается совместимость

Я поломаю формат. Версии программы без моего патча не смогут распарсить возведение в степень.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.