Nếu bạn thực sự muốn lưu số nguyên tố và một trong các câu hỏi, hãy dừng bạn là "số nguyên tố không thể chia thành các yếu tố", có một điều khác: lưu trữ nó trong danh sách mô đun của bất kỳ số nào theo thứ tự .
ví dụ nhỏ:
2831781 == 2*100^3 + 83*100^2 + 17*100^1 + 81*100^0
Danh sách là:
81, 17, 83, 2
Trong ứng dụng thực tế rất hữu ích để chia bởi mô đun của 2^32 (32-bit số nguyên), đặc biệt nếu số nguyên tố trong chế biến ứng dụng được lưu trữ dưới dạng mảng byte.
lưu trữ trong DB:
create table PRIMES
(
PRIME_ID NUMBER not null,
PART_ORDER NUMBER(20) not null,
PRIME_PART_VALUE NUMBER not null
);
alter table PRIMES
add constraint PRIMES_PK primary key (PRIME_ID, PART_ORDER) using index;
chèn ví dụ trên (1647 là ví dụ duy nhất):
insert into primes(PRIME_ID, PART_ORDER, PRIME_PART_VALUE) values (1647, 0, 81);
insert into primes(PRIME_ID, PART_ORDER, PRIME_PART_VALUE) values (1647, 1, 17);
insert into primes(PRIME_ID, PART_ORDER, PRIME_PART_VALUE) values (1647, 2, 83);
insert into primes(PRIME_ID, PART_ORDER, PRIME_PART_VALUE) values (1647, 3, 82);
giá trị prime_id có thể được gán từ chuỗi oracle ...
create sequence seq_primes start with 1 increment by 1;
Nhận ID số nguyên tố tiếp theo để chèn:
select seq_primes.nextval from dual;
chọn nội dung số nguyên tố với id đã chỉ định:
select PART_ORDER, PRIME_PART_VALUE
from primes where prime_id = 1647
order by part_order
Tại sao không chỉ đơn giản là lưu trữ chúng như dây đàn? –
Tôi không phải là một fan hâm mộ của cách tiếp cận chuỗi, bởi vì nó có một giới hạn cứng, nó cũng không ngăn chặn sự tham nhũng của datatype. – monksy
Cũng lưu trữ dưới dạng chuỗi ngụ ý rằng bạn phải thực hiện kiểm tra để xác nhận rằng giá trị là số một, không bị hỏng và phải được phân tích cú pháp. – monksy