2014-07-04 3 views
1

J'essaie de créer un programme qui trouve des nombres premiers en utilisant des listes dans Python 3.3.2. Ce que j'essaie de faire est de prendre un élément de ns et de le diviser par TOUS les éléments de b.Trouver des nombres premiers en utilisant des listes dans Python 3.3.2

C'est ce que j'ai (ne fonctionne pas):

b = [1] 
ns = [1] 

while 1 == 1: 
    if ns[-1]/b[:] == 1 or ns[-1]: 
     print (ns[-1]) 
     ns.append(ns[-1]+1) 
     b.append(b[-1]+1) 
    else: 
     print ("No prime found.") 

Et voici l'erreur que je reçois:

if ns[-1]/b[:] == 1 or ns[-1]: 
TypeError: unsupported operand type(s) for /: 'int' and 'list' 

Je comprends pourquoi cette opération est impossible (une division élément entier d'une liste par une autre liste entière ne fonctionne tout simplement pas) et se demandait s'il y avait un moyen d'atteindre mon objectif.

Merci pour toute aide.

+0

êtes-vous venu plus loin, est-ce que ma réponse m'a aidé? – timgeb

+0

Pas tout à fait. Je ne suis pas très expérimenté en python (ou tout autre langage de codage). Merci pour l'aide cependant. – user3806712

+0

qu'est-ce qui n'est pas clair? – timgeb

Répondre

0

Vous ne pouvez pas diviser un entier et une liste. Ce que vous pouvez faire est d'utiliser une compréhension de liste. Démo:

>>> ns = [1,2,3] 
>>> b= [7,9,12,13] 
>>> # divide last element of ns by all elements of b 
... 
>>> [float(ns[-1])/item for item in b if item] 
[0.42857142857142855, 0.3333333333333333, 0.25, 0.23076923076923078] 

Le premier élément de la nouvelle liste est 3/7 le deuxième élément est 3/9, et ainsi de suite. La vérification if item est là pour s'assurer que vous ne divisez pas par zéro.

edit: Vous pourriez réellement signifier quelque chose de différent, c'est-à-dire diviser un élément de ns par tous les éléments de b successivement. Demo pour ns[-1]:

>>> ns = [1,2,3] 
>>> b = [1,2,3] 
>>> sol = ns[-1] 
>>> for item in b: 
...  sol = float(sol)/item 
... 
>>> sol 
0.5 

sol est ((3/3)/2)/1

En outre, votre boucle while ne va jamais à la fin. Es-tu sûr de vouloir ça?

Questions connexes