Não entendi, e não sei oque fazer realmente! [RESOLVIDO]

1. Não entendi, e não sei oque fazer realmente! [RESOLVIDO]

unk
mostklin

(usa Slackware)

Enviado em 17/03/2012 - 15:36h

Estava fazendo uns exercícios de um livro quando me deparei com o a seguinte pergunta:

"Escreva um programa que leia um número e verifique se é ou não um número primo.Para fazer essa verificação, calcule o resta da duvusão do número por 2 e depois por todos os números ímpares até o número lido. Se o resto de uma dessas divisões for igual a zero, o número não e primo. Observe que 0 e 1 não são primos e que 2 é o único número primo que é par."

-----

Não quero que escrevam o programa, soquero que me expliquem melhor a pergunta porque não entendi muito bem oque ela pede!



Grato Pela Atenção!


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/03/2012 - 18:54h

O comando da questão pede basicamente para você validar se um número é primo ou não, a regra básica é que para um número ser primo ele só pode ser divisível (não gerar resíduo na divisão) por 1 e por ele mesmo.

Exemplo:

2 / 1 = 2 (resto 0) e 2 / 2 = 1 (resto 0) = PRIMO
9 / 1 = 9 (resto 0) e 9 / 3 = 3 (resto 0) e 9 / 9 = 1 (resto 0) = NÃO PRIMO

Faria algo como:

# caso o número fornecido for igual a 0 ou 1 o valor fornecido não é primo!
if ($NUM < 2)
PRIMO = FALSE;

# Para todos os demais números testa-se se o resto da divisão do número por 2 é igual a 0, ou se o mesmo é divisível por qualquer outro número, obtendo-se como resto 0, caso positivo o número fornecido não é primo.

$DIVIDIR = 2;
$PRIMO = TRUE; # inicialmente digo que o valor é primo
while ($DIVIDIR < $NUM) { # o laço é executado até o valor anterior ao próprio número
if (NUM % DIVIDIR == 0) {
$PRIMO = FALSE; # caso o valor for divisível por algum número >= 2 então o mesmo não é primo
$DIV++;
}
}

if (PRIMO)
echo "O número $NUM é PRIMO";






3. Re: Não entendi, e não sei oque fazer realmente! [RESOLVIDO]

unk
mostklin

(usa Slackware)

Enviado em 18/03/2012 - 19:08h

rai3mb escreveu:

O comando da questão pede basicamente para você validar se um número é primo ou não, a regra básica é que para um número ser primo ele só pode ser divisível (não gerar resíduo na divisão) por 1 e por ele mesmo.

Exemplo:

2 / 1 = 2 (resto 0) e 2 / 2 = 1 (resto 0) = PRIMO
9 / 1 = 9 (resto 0) e 9 / 3 = 3 (resto 0) e 9 / 9 = 1 (resto 0) = NÃO PRIMO

Faria algo como:

# caso o número fornecido for igual a 0 ou 1 o valor fornecido não é primo!
if ($NUM < 2)
PRIMO = FALSE;

# Para todos os demais números testa-se se o resto da divisão do número por 2 é igual a 0, ou se o mesmo é divisível por qualquer outro número, obtendo-se como resto 0, caso positivo o número fornecido não é primo.

$DIVIDIR = 2;
$PRIMO = TRUE; # inicialmente digo que o valor é primo
while ($DIVIDIR < $NUM) { # o laço é executado até o valor anterior ao próprio número
if (NUM % DIVIDIR == 0) {
$PRIMO = FALSE; # caso o valor for divisível por algum número >= 2 então o mesmo não é primo
$DIV++;
}
}

if (PRIMO)
echo "O número $NUM é PRIMO";






Muito Obrigado msm rai3mb, foi de grande ajuda....
Hoje eu perguntei tb pro meu prof de matematica ele me deu uma luz tb.
Fico muito grato por sua atenção!


4. Re: Não entendi, e não sei oque fazer realmente! [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 18/03/2012 - 20:25h

Tem que testar se o número dado é divisível por todos os seus antecessores exceto 0, 1 e ele mesmo. Fazendo um laço dividindo o número por 2 até o antecessor imediato. Já que todos os números podem ser divisíveis por um e por ele mesmo, será primo aquele em que ao final do laço não possa ser divisível por nenhum outro número. Ou seja, você vai ter que contar quantas vezes o número foi divisível entre 2 e o número imediatamente abaixo. Se der acima de 0, não é primo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts