Ir para o conteúdo
RVG

SQl _ Numeros primos

Mensagens Recomendadas

RVG    0
RVG

Boax...

Ja que estao numa de propor desafios... :P

Este problema é bastante conhecido...

O objectivo: determinar os numeros primos, usando somente uma querie, e de preferencia, com sql standard :P

CREATE TABLE tab_inteiros
(n_inteiro INTEGER);

INSERT INTO tab_inteiros VALUES (0);
INSERT INTO tab_inteiros VALUES (1);
INSERT INTO tab_inteiros VALUES (2);
INSERT INTO tab_inteiros VALUES (3);
INSERT INTO tab_inteiros VALUES (4);
INSERT INTO tab_inteiros VALUES (5);
INSERT INTO tab_inteiros VALUES (6);
INSERT INTO tab_inteiros VALUES (7);
INSERT INTO tab_inteiros VALUES (8);
INSERT INTO tab_inteiros VALUES (9);
INSERT INTO tab_inteiros VALUES (10);
INSERT INTO tab_inteiros VALUES (11);
INSERT INTO tab_inteiros VALUES (12);
INSERT INTO tab_inteiros VALUES (13);
INSERT INTO tab_inteiros VALUES (14);
INSERT INTO tab_inteiros VALUES (15);
INSERT INTO tab_inteiros VALUES (16);
INSERT INTO tab_inteiros VALUES (17);
INSERT INTO tab_inteiros VALUES (18);
INSERT INTO tab_inteiros VALUES (19);
INSERT INTO tab_inteiros VALUES (20);

ou seja, pretendemos que o resultado seja: 1, 2, 3, 5, 7, 11, 13, 17, 19

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
RVG    0
RVG

boax...

nao...

um numero primo só é divisivel por ele proprio e por 1.

se estas a testar o 10, nao serve de muito ver se é divisivel por 15.  :P

Como modificastes, vou alterar tambem.... o teu codigo devolve os pares..

Ps. Não sendo de matematica, deixo o zero ao criterio das pessoas... se é ou nao primo..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

Um numero primo tem que ser apenas divisivel por 1 e por ele mesmo (tipo o 3). Se dividires por outro qualquer numero, dá algo decimal. O que o RVG estava a dizer era o próprio 0 ser primo :P é que dividir por 0 é uma ... indeterminação (?). e é impossível. Mas acho que há quem defenda que o 0 é também um número primo...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

Um numero primo tem que ser apenas divisivel por 1 e por ele mesmo (tipo o 3). Se dividires por outro qualquer numero, dá algo decimal. O que o RVG estava a dizer era o próprio 0 ser primo :P é que dividir por 0 é uma ... indeterminação (?). e é impossível. Mas acho que há quem defenda que o 0 é também um número primo...

tipo não me ta a aparecer o numero 1 e 2 :|

posso meter aqui a sql?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

aqui vai que vergonha :S

SELECT X.Num as Primos
FROM tab_inteiros N CROSS JOIN tab_inteiros X
WHERE X.Num%N.Num != 0 AND N.Num > 0 AND N.Num < X.Num and X.Num%2 !=0
GROUP BY X.Num

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

Eu de SQL percebo pouco, mas acho que tens errado o conceito de primo :P

Tenta fazer uma query que pergunte: "Dividido por algum numero que nao ele mesmo == 1?" --> Não é primo

Outra sugestão que o RVG disse era evitares perguntar se 10 era divisível por 15, ou seja, só perguntas se o número é divísivel por outro, menor ou igual a ele :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

O número 0 e o número 1 não são, por definição, primos.

Um número primo é aquele que tem 2 divisores. O número 1 só possui um, ele próprio.

2,3,5,etc possuem 2, eles próprios e o número 1.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Claro que o código pode ser optimizado. Mas se vais ignorar os múltiplos de 2, também podes ignorar os múltiplos de 3. E os de 5, e por aí fora. No limite, é muito mais rápido calcular os primos todos e metê-los numa tabela ;P

Uma forma mais lógica de optimizar é calcular só até ao SQRT do número actual. Mas para números até 20, a optimização não é crítica.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

Apanhado! :P

eu não copiei :S apenas me baziei nesse exemplo o.0 Mas o que interessa e que eu entendi a logica... mas mesmo assim nao entendo porque o 1 e o 2 nao aparece :|

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade