Ir para conteúdo

Arquivado

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

jknet

algoritmo com numeros primos.

Recommended Posts

alguem sabe como concluir este algoritmo com numeros primos , segue o algoritmo:

 

leia 100 numeros e imprima somente os primos.

 

resolucao:

variaveis: num = 0

for i in range(0,100):
num = inta9input("digite um numero")
if (numero%==0):
   print ("este nemero é primo"):
else:
   print("este numero nao é primo")

pq nao ta simprimindo os primos. desde ja agaradeco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código saiu todo "deformado".

Mas já vendo o operador de módulo, posso deduzir que você usou divisão por 2 como critério p/ primalidade. Se for isso, está errado. Procure na internet a definição de número primo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

_Isis_ , ja procutri na internet é dificil encontrar exemplos com n primos , encontrei uma regra q um amigo passou mas nao entendi, pq ele é mais avancado em python , ele ja conhece varias sintaxe , pq tem pessoas q faz um programa c sintaxe diferente ,ai fica mais dificil de enteder, mas vou procurar neteder as sintaxe d python, você conhece outra maneira masi simples. desde agradeco. segue o modelo q ele encontrou:

 

Numeros primos:

 

def isprime(num,primes):
   for divi in primes:
       if num%divi == 0:
           return False
   return True

num,counter,primes = 2,1,[]
while counter <= M:
   if isprime(num,primes) == True:
       counter += 1
       print(num)
       primes.append(num)
   num += 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programa para ver numeros primos, você digita o limite de números que quer ver. No seu caso você quer que ele mostre de 100 números quais são primos:

import math

def fill_list(lim=10):

   """Fill a list with values from 2 to lim.

   Requires the limit.

   """

   list = []

   for index in range(2, lim + 1):
       list.append(index)

   return list

def remove_zeros(list):

   """Remove zeros from the list passed.

   Requires the list of integers.

   """

   list2 = []

   for index in range(len(list)):
       if list[index]:
           list2.append(list[index])

   return list2

def sieve_of_eratosthenes(lim=10):

   """Calculate the Sieve of Eratosthenes.

   Returns a list with zeros in place of number which
   aren't prime. Only the prime numbers are different
   of zero.

   """

   # Create the list of values and calculate the square
   # +root of the limit.
   sieve = fill_list(lim)
   limit = int(math.sqrt(lim))

   # The first 'for' structure iterates until de square root
   # +of the limit.The second 'for' structure iterates until
   # +the limit.
   for index1 in range(0, limit):
       # Jump zeros.
       if not sieve[index1]:
           continue

       for index2 in range(index1 + 1, lim - 1):
           if sieve[index2] and (not (sieve[index2] % sieve[index1])):
               sieve[index2] = 0

   return remove_zeros(sieve)


# Main
print sieve_of_eratosthenes(int(raw_input("Entre com o limite \
de numeros que quer calcular: ")))

 

Exemplo de utilização do código:

Use o pyScripter:

Cole o código acima pressione crtl+f9 ira aparecer um input pedindo para você digitar o limite de números primos que quer ver (no seu caso você digita 100) clique em ok na tela abaixo irá aparecer

>>> 
*** Remote Interpreter Reinitialized  ***
>>> 
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
>>> 

Espero ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementando a resposta acima:

 


import math

# Leitura dos números
nprimos = input("Quantos números devem ser lidos? ")
lista_numeros = []
lista_primos = []

for i in range(nprimos):
       lista_numeros.append(int(input()))



# Remove números inválidos (negativos, 1 e zeros)
lista_numeros = filter(lambda n: n > 1, lista_numeros)



# Remove as repetições
lista_numeros = list(set(lista_numeros))



# Filtragem dos primos
# Remove os inteiros N divisíveis por qualquer número entre 2 e sqrt(N).
for numero in lista_numeros:
           divisores = range(2, int(math.floor(math.sqrt(numero))) + 1)
           restos = map(lambda div: numero % div, divisores)


           if all(restos): #Se todos os restos forem maiores que 0, temos um número primo.
                       lista_primos.append(numero)

if lista_primos:
           print "Números primos:"
           print lista_primos

else:
          print "Nenhum número primo lido."

 

 

 

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.