Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Diego_Soares

Membros Juniores
  • Total de itens

    8
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. C Ver execução do codeblocks passo a passo

    adicionado 2 minutos depois Olá, tentei fazer aqui , mas os itens estão desativados no meu
  2. VisualG Algoritmo pra número primo

    Perfeito! Fiz essa e as outras correções. Em relação as nomenclaturas, devido as alterações no programa ficou meio confuso mesmo, mas agora que o programa está praticamente finalizado, vou ver se altero. Eu havia percebido quando tentei alterar o valor dele dentro da própria estrutura. Eu não conseguia. Melhor impossível. Muita dica que eu não sabia e consegui pegar aqui (CtrlU, Interrompa, {}, CRONOMETRO, e tantas outras), fora a força na elaboração do código. Valeu mesmo! O da divisão por primos eu vou tentar em breve. E o do Crivo de Eratóstenes, eu quero tentar futuramente sim, caso precise eu até posto um tópico específico. Obrigado pela força! E estarei acompanhando o forum. adicionado 1 minuto depois Esqueci o código Var Cont1, N, divisores, Cont2, primo: inteiro Inicio CRONOMETRO ON //para Cont1 de 1 ate 1000 faca para Cont1 de 1 ate 1000 faca se (Cont1 % 2 <> 0) ou (Cont1 = 2) então N <- int(raizq(Cont1)) divisores <- 0 para Cont2 de 1 ate N faca se (Cont1 % Cont2 = 0) então divisores <- divisores + 1 se divisores > 1 então interrompa fimse fimse fimpara se (divisores = 1) então se Cont1 <> 1 então {escreval(Cont1)} //exibe na tela os primos primo <- primo + 1 fimse fimse fimse fimpara escreval("Total de números primos: ", primo) CRONOMETRO OFF Fimalgoritmo
  3. VisualG Algoritmo pra número primo

    Olá Inseri os três primeiros itens (não sei se da maneira correta) O último código que eu postei era executado em aproximadamente 17 segundos. Esse de agora não chega a 1 segundo. (números de 1 a 1000 ambos os programas) Inicio CRONOMETRO ON //para Cont1 de 1 ate 1000 faca para Cont1 de 1 ate 1000 faca se (Cont1 % 2 <> 0) ou (Cont1 = 2) então N <- int(raizq(Cont1)) divisores <- 0 para Cont2 de 1 ate N faca N <- Cont1 se (N % Cont2 = 0) então divisores <- divisores + 1 se divisores > 1 então interrompa fimse fimse fimpara se (divisores = 1) então se Cont1 <> 1 então primo <- primo + 1 fimse fimse fimse fimpara escreval("Total de números primos: ", primo) CRONOMETRO OFF Fimalgoritmo
  4. VisualG Algoritmo pra número primo

    Boa tarde Não entendi bem essa parte, mas o código ficou assim Var n1, C, primo, divisores: inteiro Inicio primo <- 0 para n1 de 1 ate 1000 faca se n1 < 24 então divisores <- 0 C <- 0 enquanto C < int(raizq(n1)) faca C <- C + 1 se n1 % C = 0 então divisores <- divisores + 1 fimse fimenquanto se divisores = 1 então se n1 <> 1 então primo <- primo + 1 fimse fimse senao se n1 % 2<>0 então se n1 % 3<>0 então se n1 % 5<>0 então se n1 % 7<>0 então se n1 % 11<>0 então se n1 % 13<>0 então se n1 % 17<>0 então se n1 % 19<>0 então se n1 % 23<>0 então divisores <- 0 C <- 0 enquanto C < int(raizq(n1)) faca C <- C + 1 se n1 % C = 0 então divisores <- divisores + 1 fimse fimenquanto se divisores = 1 então primo <- primo + 1 fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse fimpara escreval ("Total de números primos: ", primo) Fimalgoritmo
  5. VisualG Algoritmo pra número primo

    @Simon Viegas Muito bom. Seguindo um passo de cada vez, refazendo, etc, deu pra progredir bastante. Vamos lá: Depois que alterei para a estrutura 'enquanto' (a estrutura 'para' tava 'parando' o programa, desculpa rs), o programa não travou mais. Porém, demorava muito para concluir os cálculos (praticamente igual antes). Então fiz os seguintes ajustes, seguindo as recomendações: 1 - Conferir apenas os números: ímpares (com exceção do 2), e os não divisíveis por primos (2, 3, 5, 7...). 2 - Dividir até a metade do valor de cada número. "enquanto (divisor_de_n < n/2) faca" 3 - Ir para o próximo número assim que for identificado um divisor extra (3 ou mais, logo 'não primo') O programa ficou bem melhor e fazia menos conta. Agora o próximo passo era encontrar um MD (máximo divisor) que identificasse se um número é primo ou não ainda menor (menor possível). Eu observei que quando o número era primo, ele continuava fazendo muitas verificações, pois, no caso do primo, a condição que fazia o programa parar de verificar era quando (divisor_de_n > n/2). Pesquisando encontrei que pra saber se um número é primo (tem apenas dois divisores) você pode fazer tentativas de divisão até o valor da raiz dele. Você verifica enquanto (divisor_de_n < raiz_de_n). // pulo do gato Bom, com isso, eu procurei como usar raiz quadrada e deixar o resultado como inteiro no visualg; depois de testes ficou assim: "enquanto divisor_de_n < int(raizq(n)) faca" O código está assim: Var n1, C, primo, divisores: inteiro Inicio primo <- 8 // Inicializa com o valor de '8' enquanto "para n1 de 1 ate 23 ou mais" para n1 de 1 ate 1000 faca se n1 % 2<>0 então se n1 % 3<>0 então se n1 % 5<>0 então se n1 % 7<>0 então se n1 % 11<>0 então se n1 % 13<>0 então se n1 % 17<>0 então se n1 % 19<>0 então se n1 % 23<>0 então divisores <- 0 C <- 0 enquanto C < int(raizq(n1)) faca C <- C + 1 se n1 % C = 0 então divisores <- divisores + 1 fimse fimenquanto se divisores = 1 então primo <- primo + 1 fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse fimpara escreval ("Total de números primos: ", primo) Fimalgoritmo Obs. Será que ainda dá pra inicializar "C" com o valor de 1? Eu não consegui implementar. Qualquer dica é bem vinda. Muito obrigado pela ajuda até aqui!
  6. VisualG Algoritmo pra número primo

    Muito boas as dicas. Tá trabalhoso, mas com as recomendações consegui progredir. Falta mudar algumas coisas ainda no código. A minha dificuldade tá em aplicar o máximo divisor sem acabar criando mais contas para o algoritmo executar. Uma coisa que eu tive que fazer foi mudar a estrutura "para" para outra (no caso, a "enquanto"). Var Cont1, divisores, C, primo: inteiro Inicio primo <- 0 para Cont1 de 1 ate 100 faca se Cont1 % 2 <> 0 então divisores <- 0 C <- 0 enquanto (C < Cont1) faca C <- C + 1 se Cont1 % C = 0 então divisores <- divisores + 1 se divisores > 2 então C <- Cont1 fimse fimse se C * 2 >= Cont1 então se divisores = 1 então divisores <- divisores + 1 C <- Cont1 fimse fimse fimenquanto se divisores = 2 então primo <- primo + 1 fimse fimse fimpara escreval("Total de números primos: ", primo) Fimalgoritmo Próximo passo é esse.
  7. VisualG Algoritmo pra número primo

    Bom dia a todos. Obrigado @André Ferreira da Silva ! Toda dica já me ajuda muito! A intenção é manter as práticas mais recomendadas. @Simon Viegas , bem que eu suspeitava que tinha conta sem necessidade sendo feita . Obrigado por esclarecer perfeitamente minhas dúvidas. Vou seguir essa recomendação e depois vou tentar a outra forma de dividir apenas por números primos.
  8. Boa noite, Estou com uma questão pra elaborar um algoritmo que calcule o total de números primos entre 1 e 1000 utilizando a estrutura de repetição para. E depois de um dia batendo cabeça, o máximo que eu consegui foi a seguinte solução: o programa apresenta o resultado correto, porém durante a execução do algoritmo ele para de responder cerca de 5 segundos. Var Cont1, N, divisores, Cont2, primo: inteiro Inicio para Cont1 de 1 ate 1000 faca N <- Cont1 divisores <- 0 para Cont2 de 1 ate N faca se (N % Cont2 = 0) então divisores <- divisores + 1 fimse fimpara se (divisores = 2) então primo <- primo + 1 fimse fimpara escreval("Total de números primos: ", primo) Fimalgoritmo Alguém tem uma forma melhor de fazer, ou de ajustar/otimizar? Qualquer dica adicional quanto a elaborar um código é muito bem vinda também.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×