Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

понедельник, 15 июня 2009 г.

Получение простых чисел (prime numbers) в SQL

Просто забавная задачка на SQL: дана табличка с единственным полем (тип INT), содержащее числа от 1 до (допустим) 100. Требуется одним SQL-запросом вывести все простые числа из этой таблицы. Решение приведено для MySQL. Адаптировать его для других СУБД - без проблем.

Скрипт,создающий и заполняющий таблицу:




DROP TABLE IF EXISTS pnum;
CREATE TABLE pnum (
num int(11) NOT NULL
) ENGINE=HEAP;

DROP PROCEDURE IF EXISTS InsertNumbers;

DELIMITER |

CREATE PROCEDURE InsertNumbers(IN LMT INT)
BEGIN
DECLARE CNT INT;
SET CNT = 1;
WHILE CNT <= LMT DO
INSERT INTO pnum VALUES (CNT);
SET CNT = CNT + 1;
END WHILE;
END;

DELIMITER ;

CALL InsertNumbers(100);



Запрос, выводящий все простые числа:




SELECT p1.num FROM pnum p1
WHERE NOT EXISTS
(SELECT p2.num FROM pnum p2
WHERE p2.num < p1.num AND p2.num > 1 AND p1.num % p2.num = 0);

Комментариев нет:

Отправить комментарий

Постоянные читатели