Ir ao conteúdo
  • Cadastre-se

Número Primo


Posts recomendados

  • Membro VIP

Olá @pinheiro18.

 

Primeiramente você precisa saber o que é um número primo. Daí desenvolver um algoritmo que faça essa verificação, ou seja, quais os passos necessários para verificar se um número é primo ou não...  por exemplo, como saber se o número 127 é primo ou não? como faria isso no papel? Depois traduza esse algoritmo para Pascal.

 

A declaração de funções no Pascal poderia se algo assim:

function ehPrimo(n:integer):boolean
  var //declaração das variáveis locais
    i :integer;
  begin

  end;

 

RESUMINDO:

- Descubra um pouco mais a fundo o que é um número primo;

- Verifique forma de como identificar se um número é primo ou não;

- Tente traduzir algumas dessas formas para Pascal.

 

No aguardo.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 17/06/2017 às 09:52, Simon Viegas disse:

Alguma novidade?

 

No aguardo.

 

Consegui resolver a questão, agradeço pela ajuda

program numero_primo;

uses crt;

function primo (v:integer):boolean;
var
   i,cont:integer;
begin
    cont:=0;
    for i:=1 to v do
    begin
         if v > 0 then
         begin
              if (v mod i)=0 then
                 cont:= cont + 1;
          end;
    end;
    if cont = 2 then
       result:= true
       else
           result:= false;
end;

var
    r: boolean; 
    valor: integer;
Begin
  write('Informe um valor: ');
  readln(valor);
  r:= primo(valor);
  writeln;
  writeln(r);
readkey;
End.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá, alguns pontos:

 

1-  Teoricamente o if v > 0 then dentro do for não tem utilidade, pois se o for foi executado é porquê v é maior ou igual a 1, logo nunca a condição dele será falsa. Talvez poderia inverter, ou seja, deixar o for dentro desse if, mas acho que é desnecessário pois o for já verifica (seria bom fazer testes).

2- Ao executar o programa, o mesmo não apresenta qual a sua finalidade e nem, de certo modo, qual foi a resposta, ou seja, apenas está solicitando um número e retornado uma resposta em inglês... (true ou false). Sugestão: peça para outra pessoa executar esse código sem que ela saiba do que se trata. (seria bom ter um apresentação e exibir uma resposta mais específica)

3- Em relação a resposta, poderia ser algo como "O número 'X' é primo" ou simplesmente "Primo". (e os casos contrários, é claro). Ai tem várias formas como tratar, ex.:

if primo(valor) then  //observe que "primo()" já retorna true ou false, logo não precisa igualar a "true"
  writeln('xxxxxxx')
else
  writeln('yyyyyy')

 

 

Qualquer coisa posta o "novo" código para analisarmos ou apenas um feedback.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

O laço for

6 horas atrás, pinheiro18 disse:

for i:=1 to v do

Para verificar se o número V é primo basta testar até a raiz de V tornando o código muito mais rápido.

Qualquer divisão inteira que possa acontecer depois da raiz já terá acontecido antes disso invertendo o divisor e o quociente. Por exemplo a raiz de 234567 é 484. 234567 / 3 = 78789 é redundante verificar que 234567 / 78789 = 3.

Quebrar o loop na primeira divisão inteira também ajuda.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Um dos pontos que também é importante verificar se a regra dos primos é apenas para números naturais ou se vale também para números negativos!!! O Wikipedia mesmo fala de negativos:
 

https://pt.wikipedia.org/wiki/Número_primo

 

Se números negativos também são válidos, o algoritmo terá que ser adaptado!!!

 

 

Existem outras melhoras possíveis... consegui imaginar essas agora:

 

1- se for par não é primo; (não precisa fazer conta, apenas se for o 2, é claro).

2- ao encontrar o terceiro divisor para de fazer as contas (lembrando que SEMPRE já começa com 2: 1 e ele mesmo);

3- começar as divisões a partir do 3;

4- fazer divisões usando apenas números ímpares (pois o número é ímpar!. obs.: ideal seria primos, mas.....)

 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...