Координаты пикселя выбора PyQt при увеличении изображения [дубликат]

Это, я считаю, довольно эффективная процедура, в которой перечислены все простые числа до 1000.

Он проверяет каждое число ($ x), чтобы увидеть, есть ли у него какие-либо факторы (кроме сам и 1, конечно).

Математически нет необходимости проверять все нижние числа как возможные факторы, а только младшие простые числа до квадратного корня из $ x. Это активируется путем хранения простых чисел, поскольку они находятся в массиве (который, я думаю, является стратегией, к которой обращался OP).

Как только первый основной коэффициент найден, мы знаем, что $ x является не простое, и поэтому дальнейшее тестирование этого значения $ x не требуется, и мы можем выйти из цикла foreach.

$primes = array();
for ($x = 2; $x <= 1000; $x++) {
    $xIsPrime = TRUE;
    $sqrtX = sqrt($x);
    foreach ($primes as $prime) if ($prime > $sqrtX || ((!($x % $prime)) && (!$xIsPrime = FALSE))) break;
    if ($xIsPrime) echo ($primes[] = $x)  . "<br>";
}
0
задан eyllanesc 17 May 2018 в 00:03
поделиться

1 ответ

Когда вы увеличиваете масштаб и нажимаете пиксель, это может представлять собой набор пикселей или наоборот, я думаю, вы понимаете, что, поскольку показать изображение является уменьшающим или сжатым, в зависимости от обстоятельств. Поэтому, в конце концов, что бы это ни было, вы получите пиксель, который не будет идеальным, но очень близким. Переходя к сути, учитывая, что при реализации @ekhumuro нет эскалации элементов, правильно использовать положение мыши относительно системы координат элемента, а не сцены, поскольку элемент может перемещаться, так что общее решение, считающее, что элемент не преобразуется, является:

def mousePressEvent(self, event):
    if self._photo.isUnderMouse():
        p = self._photo.mapToItem(self._photo, self.mapToScene(event.pos()))
        self.photoClicked.emit(p.toPoint())
    super(PhotoViewer, self).mousePressEvent(event)
1
ответ дан eyllanesc 15 August 2018 в 23:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: