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

Estou com dúvida neste algoritmo

 

Escrever um algoritmo/programa

que calcula e escreve o produto dos números primos entre 92 e 1478

 

Eu fiz só que esta dando erro

 

Por favor alguem poderia me ajudar?

 

algoritmo "mostrar numeros primos"

// Função : Verificar se um numero e primo ou não e multiplicar os primos

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

i, total: inteiro

a : inteiro

inicio

// Seção de Comandos

a <- 1

enquanto (a=1) faca

limpatela

total <- 1

para i de 92 ate 1478 faca

se (i %2<>0) e (i%2=1) entao

total <- total * i

fimse

fimpara

fimenquanto

 

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim

 

algoritmo "mostrar numeros primos"

// Função : Verificar se um numero e primo ou nnão

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

acm, x, i, n: inteiro

inicio

// Seção de Comandos

para i de n-1 ate 1478 faca

se (n % i = 0) entao

escreva("Não é primo")

fimse

se (n%i=0) entao

acm <- acm * n

fimse

escreval(acm)

fimpara

 

fimalgoritmo

 

 

 

Estou com dúvida neste algoritmo

 

Escrever um algoritmo/programa

que calcula e escreve o produto dos números primos entre 92 e 1478

 

Eu fiz só que esta dando erro

 

Por favor alguem poderia me ajudar?

 

algoritmo "mostrar numeros primos"

// Função : Verificar se um numero e primo ou não e multiplicar os primos

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

i, total: inteiro

a : inteiro

inicio

// Seção de Comandos

a <- 1

enquanto (a=1) faca

limpatela

total <- 1

para i de 92 ate 1478 faca

se (i %2<>0) e (i%2=1) entao

total <- total * i

fimse

fimpara

fimenquanto

 

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste o algoritmo fazendo essa atribuição:

 

algoritmo "mostrar numeros primos"
// Função : Verificar se um numero e primo ou nnão
// Autor : Gustavo Rodrigues Torre
// Data : 10/02/99
// Seção de Declarações 
var
acm, x, i, n: inteiro
acm <- 1
inicio
// Seção de Comandos 
para i de n-1 ate 1478 faca
se (n % i = 0) entao
escreva("Não é primo")
fimse
se (n%i=0) entao
acm <- acm * n
fimse
escreval(acm)
fimpara

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro pq

acm <- 1

No lugar das variaveis não e aceito.

O que fazer agora?

Tem outro jeito de se fazer isso?

 

Teste o algoritmo fazendo essa atribuição:

 

algoritmo "mostrar numeros primos"
// Função : Verificar se um numero e primo ou nnão
// Autor : Gustavo Rodrigues Torre
// Data : 10/02/99
// Seção de Declarações 
var
acm, x, i, n: inteiro
acm <- 1
inicio
// Seção de Comandos 
para i de n-1 ate 1478 faca
se (n % i = 0) entao
escreva("Não é primo")
fimse
se (n%i=0) entao
acm <- acm * n
fimse
escreval(acm)
fimpara

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz o que você falou e só mostra 92 um monte de vezes

 

Onde esta o erro agora?

 

algoritmo "mostrar numeros primos"

// Função : Verificar se um numero e primo ou nnão

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

acm, x, i, n: inteiro

inicio

// Seção de Comandos

acm <- 1

n <- 92

para i de 92-1 ate 1478 faca

se (n % i = 0) entao

escreva("Não é primo")

fimse

se (n%i=0) entao

acm <- acm * n

fimse

escreval(acm)

fimpara

 

fimalgoritmo

 

 

A atribuição vem depois do inicio, erro meu.

Atribua a n o valor 92 antes de entrar no laço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo o que eu entendi do alogirmo, eu acho que só está mostrando 92, porque você não muda o valor de n.

 

Neste algoritmo você precisa de duas repetição. Uma para mudar o valor de n (que vai de 92 até 1478)

E dentro desta repetição outra que teste se o número é primo (que vai fazendo o módulo de 1 até n)

 

Ai sim você faz o teste para ver se você deve multiplicar o seu resultado total ou não.

 

 

 

Se quiser uma forma eficiente de verificar se um número é primo, você não precisar testar se os modulos de 1 até o número. Se você testar os modulos de 1 até a raiz quadrada do numero, já é suficiente. Mas isso é opcional, é melhor fazer o mais simples primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não esta certo

Eu fiz o que você falou mais ta dando o mesmo erro só que agora aprece os numeros multiplicados um monte de vezes.

 

acm <- 1

n <- 1478

para i de 92 ate 1478 faca

para i de 1 ate n faca

 

se (n % i = 0) entao

escreva("Não é primo")

fimse

se (n%i=0) entao

acm <- acm * n

fimse

escreval(acm)

fimpara

fimpara

 

 

 

 

 

 

 

 

 

Pelo o que eu entendi do alogirmo, eu acho que só está mostrando 92, porque você não muda o valor de n.

 

Neste algoritmo você precisa de duas repetição. Uma para mudar o valor de n (que vai de 92 até 1478)

E dentro desta repetição outra que teste se o número é primo (que vai fazendo o módulo de 1 até n)

 

Ai sim você faz o teste para ver se você deve multiplicar o seu resultado total ou não.

 

 

 

Se quiser uma forma eficiente de verificar se um número é primo, você não precisar testar se os modulos de 1 até o número. Se você testar os modulos de 1 até a raiz quadrada do numero, já é suficiente. Mas isso é opcional, é melhor fazer o mais simples primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo faça uma coisa por vez.

 

Vamos dividir seu problema em duas partes:

 

1 - Achar os números primos entre 92 e 1478.

Veja seu código:

 

para i de 92 ate 1478 faca
   para i de 1 ate n faca
	  se (n % i = 0) entao
		 escreva("Não é primo")
	  fimse
	  se (n%i=0) entao
		 escreva("É primo") // mudei só isso
		 // aqui voce precisa terminar o para pode ser feito com break
	  fimse
	  escreval(acm)
   fimpara
fimpara

Nunca percebi algum proposito em usar dois paras manipulando a mesma variável.

O que voce precisa é:

Que n vá de 92 até 1478 e i vá de 1 até (n-1)

Faça o simples, não tente inventar, veja como fica:

 

para n de 92 ate 1478 faca
   para i de 1 ate (n-1) faca

Tente arrumar isso e vamos prosseguir com calma.

 

 

2 - Somar esses números.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz como você falou mais ainda não consegui somar os numeros

 

acm <- 1

n <- 1478

para n de 92 ate 1478 faca

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") // mudei só isso

// aqui voce precisa terminar o para pode ser feito com break

interrompa

acm <- acm + n

fimse

 

 

escreval(acm)

fimpara

fimpara

 

 

 

Amigo faça uma coisa por vez.

 

Vamos dividir seu problema em duas partes:

 

1 - Achar os números primos entre 92 e 1478.

Veja seu código:

 

para i de 92 ate 1478 faca
   para i de 1 ate n faca
	  se (n % i = 0) entao
		 escreva("Não é primo")
	  fimse
	  se (n%i=0) entao
		 escreva("É primo") // mudei só isso
		 // aqui voce precisa terminar o para pode ser feito com break
	  fimse
	  escreval(acm)
   fimpara
fimpara

Nunca percebi algum proposito em usar dois paras manipulando a mesma variável.

O que voce precisa é:

Que n vá de 92 até 1478 e i vá de 1 até (n-1)

Faça o simples, não tente inventar, veja como fica:

 

para n de 92 ate 1478 faca
   para i de 1 ate (n-1) faca

Tente arrumar isso e vamos prosseguir com calma.

 

 

2 - Somar esses números.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exercício pede o produto, então é a multiplicação desses valores.

Bom...qual o erro observado?

 

Eu fiz como você falou mais ainda não consegui somar os numeros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça isso:

 

para i de 92 ate 1478 faca
   primo <- true
   para i de 1 ate n faca
	  se (n % i = 0) entao
		 primo <- false
		 interrompa
	  fim_se
   fimpara
   se (primo = true) entao
	  acm <- acm * n
   fim_se
fimpara

escreva (acm)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este primo <- true

Não aceito no Visualg

 

Faça isso:

 

para i de 92 ate 1478 faca
   primo <- true
   para i de 1 ate n faca
	  se (n % i = 0) entao
		 primo <- false
		 interrompa
	  fim_se
   fimpara
   se (primo = true) entao
	  acm <- acm * n
   fim_se
fimpara

escreva (acm)

 

Eu fiz assim e o resultado e zero

 

var

primo : logico

i, n,acm : inteiro

inicio

// Seção de Comandos

n <- 1478

para i de 92 ate 1478 faca

primo <- verdadeiro

para i de 1 ate n faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

fimse

fimpara

 

escreva (acm)

fimalgoritmo

 

 

Este primo <- true

Não aceito no Visualg

 

Faça isso:

 

para i de 92 ate 1478 faca
   primo <- true
   para i de 1 ate n faca
	  se (n % i = 0) entao
		 primo <- false
		 interrompa
	  fim_se
   fimpara
   se (primo = true) entao
	  acm <- acm * n
   fim_se
fimpara

escreva (acm)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim e o resultado e zero

 

var

primo : logico

i, n,acm : inteiro

inicio

// Seção de Comandos

n <- 1478

para i de 92 ate 1478 faca

primo <- verdadeiro

para i de 1 ate n faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

fimse

fimpara

 

escreva (acm)

fimalgoritmo

Qual o valor inicial de acm? Se ele for zero, então seu resultado será zero... Tente incia-lo com 1 para ver o que você vai obter

Outra coisa, acho que você definiu n com o valor fixo 1478, então o valor dele não ira mudar.

Acho que deveria ser:

[...]

para i de 92 ate 1478 faca

n <- i

[continuação...]

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tela não aperece nada

Eu fiz o que você disse e da erro do mesmo jeito

 

O que eu faço?

Já estou ficando nervoso pq o algoritmo não roda

 

algoritmo "multiplicar numeros primos"

// Função : Verificar se um numero e primo ou nnão

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

acm, x, i, n: inteiro

inicio

// Seção de Comandos

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

n <- i

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

 

fimalgoritmo

 

 

 

Eu fiz assim e o resultado e zero

 

var

primo : logico

i, n,acm : inteiro

inicio

// Seção de Comandos

n <- 1478

para i de 92 ate 1478 faca

primo <- verdadeiro

para i de 1 ate n faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

fimse

fimpara

 

escreva (acm)

fimalgoritmo

Qual o valor inicial de acm? Se ele for zero, então seu resultado será zero... Tente incia-lo com 1 para ver o que você vai obter

Outra coisa, acho que você definiu n com o valor fixo 1478, então o valor dele não ira mudar.

Acho que deveria ser:

[...]

para i de 92 ate 1478 faca

n <- i

[continuação...]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tela não aperece nada

Eu fiz o que você disse e da erro do mesmo jeito

 

O que eu faço?

Já estou ficando nervoso pq o algoritmo não roda

 

algoritmo "multiplicar numeros primos"

// Função : Verificar se um numero e primo ou nnão

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

acm, x, i, n: inteiro

inicio

// Seção de Comandos

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

n <- i

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

 

fimalgoritmo

Não aparece nada porque o n <- i está dentro do segundo laço. Se n = i, n % i sempre será 0.

 

Passe o n para fora e veja o que acontece

 

var

primo : logico

i, n,acm : inteiro

inicio

// Seção de Comandos

acm <- 1

para i de 92 ate 1478 faca

primo <- verdadeiro

n <- i

para i de 1 ate (n-1) faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

fimse

fimpara

 

escreva (acm)

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu passei e deu erro do mesmo jeito

O que eu faço agora?

 

n <- i

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

 

 

 

A tela não aperece nada

Eu fiz o que você disse e da erro do mesmo jeito

 

O que eu faço?

Já estou ficando nervoso pq o algoritmo não roda

 

algoritmo "multiplicar numeros primos"

// Função : Verificar se um numero e primo ou nnão

// Autor : Gustavo Rodrigues Torre

// Data : 10/02/99

// Seção de Declarações

var

acm, x, i, n: inteiro

inicio

// Seção de Comandos

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

n <- i

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

 

fimalgoritmo

Não aparece nada porque o n <- i está dentro do segundo laço. Se n = i, n % i sempre será 0.

 

Passe o n para fora e veja o que acontece

 

var

primo : logico

i, n,acm : inteiro

inicio

// Seção de Comandos

acm <- 1

para i de 92 ate 1478 faca

primo <- verdadeiro

n <- i

para i de 1 ate (n-1) faca

se (n % i = 0) entao

primo <- falso

interrompa

fimse

fimpara

se (primo = verdadeiro) entao

acm <- acm * n

fimse

fimpara

 

escreva (acm)

fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua estrutura está assim:

 

n <- i

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

 

 

Ou 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

A minha estrutura esta assim:

 

n <- i

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

 

Sua estrutura está assim:

 

n <- i

acm <- 1

para i de 92 ate 1478 faca

para i de 1 ate (n-1) faca

 

 

Ou 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

×

Informação importante

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