Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

[Resolvido] Multiplicar primos

Recommended Posts

O passar o n para fora, era apenas de um laço Imagem Postada

 

Tem que ficar assim

 

acm <- 1

para i de 92 ate 1478 faca

n <- i

para i de 1 ate (n-1) faca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora só esta mostrando a mensagem e primo e não e primo um monte de vezes

 

acm <- 1

para i de 92 ate 1478 faca

n <- i

para i de 1 ate (n-1) faca

 

se (n % i = 0) entao

escreva("Não é primo")

fimse

se (n%i=0) entao

escreva("É primo")

interrompa

acm <- acm * n

fimse

 

escreval(acm)

fimpara

fimpara

O passar o n para fora, era apenas de um laço Imagem Postada

 

Tem que ficar assim

 

acm <- 1

para i de 92 ate 1478 faca

n <- i

para i de 1 ate (n-1) faca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todo número é divisível por 1 e os pares por 2, então pode fazer assim:

 

acm <- 1
para n de 93 ate 1477 faca passo 2
   primo <- 1
   para i de 3 ate (n-1) faca
	  se (n % i = 0) entao
		 primo <- 0
		 interrompa
	  fimse
   fimpara
   se (primo = 1) faca
	  acm <- acm * n
   fimse
fimpara
escreval(acm)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro

Aprareceu uma mensagem de erro na tela.

 

Todo número é divisível por 1 e os pares por 2, então pode fazer assim:

 

acm <- 1
para n de 93 ate 1477 faca passo 2
   primo <- 1
   para i de 3 ate (n-1) faca
	  se (n % i = 0) entao
		 primo <- 0
		 interrompa
	  fimse
   fimpara
   se (primo = 1) faca
	  acm <- acm * n
   fimse
fimpara
escreval(acm)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A multiplicação deve ter passado dos limites dos inteiros.

Para verificar se está fazendo tudo correto dentro do se coloque algo para te ajudar a identificar o problema.

 

   se (primo = 1) faca
	  acm <- acm * n
	  escreva "achei um primo ", n
	  escreva "O valor da multiplicacao eh: ", "acm"
   fimse

Uma tela dizendo: Integer Overflow

O que é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu o mesmo erro.

E apreceu varios numeros como 92,93,94 e o resultado final.

Não sei mais o que fazer

 

 

A multiplicação deve ter passado dos limites dos inteiros.

Para verificar se está fazendo tudo correto dentro do se coloque algo para te ajudar a identificar o problema.

 

   se (primo = 1) faca
	  acm <- acm * n
	  escreva "achei um primo ", n
	  escreva "O valor da multiplicacao eh: ", "acm"
   fimse

Uma tela dizendo: Integer Overflow

O que é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara sinceramente difícil acreditar que tenha aparecido isso na tela:

92,93,94

 

veja como está o laço:

para n de 93 ate 1477 faca passo 2

 

como aparece números pares?

não tem atribuição a n em nunhuma outra parte do código.

 

Ou voce não está rodando o código que discutimos ou seu compilador está implementando outra linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara olha só a saida do programa

 

achei um primo 93O valor da multiplicacao eh: 9 3achei um primo 95 O valor da multiplicacao eh: 8835achei um primo 95 O valor da multiplicacao eh: 839325 achei um primo 95 O valor da multiplicacao eh: 79735875

 

Não sei o que esta havendo

 

 

cara sinceramente difícil acreditar que tenha aparecido isso na tela:

92,93,94

 

veja como está o laço:

para n de 93 ate 1477 faca passo 2

 

como aparece números pares?

não tem atribuição a n em nunhuma outra parte do código.

 

Ou voce não está rodando o código que discutimos ou seu compilador está implementando outra linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que o laço para não está incrementando a variável n corretamente, então faça i incremento manual use o loop enquanto.

 

n <- 93
enquanto (n <= 1477) faca
.
.
.
n <- n + 2
fim_enquanto

No final do loop antes do fim_enquanto incremente n.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não enti o que você quis dizer

 

Estes pontos eu devo colocar o que?

 

Parece que o laço para não está incrementando a variável n corretamente, então faça i incremento manual use o loop enquanto.

 

n <- 93
enquanto (n <= 1477) faca
.
.
.
n <- n + 2
fim_enquanto

No final do loop antes do fim_enquanto incremente n.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código ficaria deste jeito?

 

n <- 92

enquanto (n <= 1477) faca

primo <- 1

enquanto (n <= 1477) faca

se (primo = 1) entao

acm <- acm * n

escreva ("achei um primo ", n)

escreva ("O valor da multiplicacao eh: ", acm)

fimse

fimenquanto

fimenquanto

 

Coloque todo o código anterior, substituindo o loop para pelo loop enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível calcular, o número é muito grande.

Estoura a capacidade do float.

 

Veja como ficou:

 

algoritmo "semnome"
// Função :
// Autor :
// Data : 13/11/2007
// Seção de Declarações 
var
   i, n: inteiro
   acm: real
   primo: logico
inicio
acm <- 1.0
para n de 93 ate 1477 faca passo 2
   primo <- verdadeiro
   para i de 3 ate (n-1) faca
	  se (n % i = 0) entao
		 primo <- falso
		 interrompa
	  fimse
   fimpara
   se (primo = verdadeiro) entao
	  //acm <- acm * n
	  escreval ("achei um primo", n)
	  //escreva ("O valor da multiplicacao eh: ", acm)
   fimse
fimpara
escreval(acm)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

E mudando o algoritmo para um numero menor tipo de 92 até 300

Ele me apresenta o valor da multiplicação igual a 1

Outro problema a ser solucionado

 

Não é possível calcular, o número é muito grande.

Estoura a capacidade do float.

 

Veja como ficou:

 

algoritmo "semnome"
// Função :
// Autor :
// Data : 13/11/2007
// Seção de Declarações 
var
   i, n: inteiro
   acm: real
   primo: logico
inicio
acm <- 1.0
para n de 93 ate 1477 faca passo 2
   primo <- verdadeiro
   para i de 3 ate (n-1) faca
	  se (n % i = 0) entao
		 primo <- falso
		 interrompa
	  fimse
   fimpara
   se (primo = verdadeiro) entao
	  //acm <- acm * n
	  escreval ("achei um primo", n)
	  //escreva ("O valor da multiplicacao eh: ", acm)
   fimse
fimpara
escreval(acm)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas isso é fácil de se resolver.

 

tire o cometário dessa linha:

 

acm <- acm * n

 

E mudando o algoritmo para um numero menor tipo de 92 até 300

Ele me apresenta o valor da multiplicação igual a 1

Outro problema a ser solucionado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais um erro o programa me apresenta o valor 4

E 4 não e primo

 

algoritmo "semnome"

// Função :

// Autor :

// Data : 13/11/2007

// Seção de Declarações

var

i, n: inteiro

acm: real

primo: logico

inicio

 

acm <- 1

 

para n de 1 ate 100 passo 1 faca

primo <- verdadeiro

para i de 3 ate (n-1) faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

escreval ("achei um primo", n)

fimse

fimpara

 

escreva ("O valor da multiplicacao eh: ", acm)

fimalgoritmo

 

 

 

mas isso é fácil de se resolver.

 

tire o cometário dessa linha:

 

acm <- acm * n

 

E mudando o algoritmo para um numero menor tipo de 92 até 300

Ele me apresenta o valor da multiplicação igual a 1

Outro problema a ser solucionado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas lembra o que combinamos?

Todo número par é primo, por isso os testes no loop abaixo começa em 3.

 

Faça passo 2 no loop para.

 

:nataldry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou legal ve ai se o resultado e igual ao meuCom todos os primos entre 1 e 100Se deu certo podemos colocar com resolvidoO meu resultado foi: 1.15278398197276E36

Sim, mas lembra o que combinamos?Todo número par é primo, por isso os testes no loop abaixo começa em 3.Faça passo 2 no loop para. :nataldry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.