J'ai donné un numéro (N), ainsi qu'un éventail de diviseurs possibles pour ce numéro. Je suis censé renvoyer une liste de tous les nombres premiers éventuels de la plage (n) dans l'ordre inverse, et il doit être écrit dans une ligne via la compréhension de la liste.
J'ai écrit quelque chose avec une ligne qui obtient la sortie nécessaire, mais je ne peux pas comprendre comment l'écrire comme une compréhension de liste. P>
Le diviseur: p> Ceci est le code J'ai: p> Il s'agit de la doctrine incluse avec la question: p>
3 Réponses :
Cela devrait le faire.
import math import itertools n = 100 DOUBLE = 2 divisors = [i for i in range(DOUBLE, math.ceil(n/DOUBLE))] #Find all combinations of divisors prod = itertools.product(divisors, repeat=2) #Run through all combinations to get non primes non_primes = [t[0]*t[1] for t in prod] #Get primes print([item for item in list(range(2, n)) if item not in non_primes][::-1])
Vous pouvez utiliser une compréhension de liste qui itière un entier de N code> à
2 code> dans l'ordre inverse et ne conserve que ceux qui sont l'un des diviseurs donnés eux-mêmes, ou ne peut pas être divisé par aucun des diviseurs:
Utilisation sournoise du modulo et de la véracité de la vérité! = 0 - moi aime.
Ma SUGESSTION serait de vraiment l'incocorer comme une doublure.
code strong> p> forte> > p> D'ailleurs, nice art d'utiliser la soustraction sur des ensembles pour emporter des éléments de la première série. P> P>
Plage Code> Retourne un objet générateur pouvant être utilisé pour l'iteration à droite. Li>
triée code> avec le drapeau de l'argument
inversé code> garantit que la sortie est dans l'ordre inversé. Un
Set code> n'est pas nécessairement trié. Li>
OL>
Avez-vous essayé
ITERTOOLS.PRODUCT () CODE> < / a>?
Voulez-vous la recherche de diviseur ou le retour écrit comme une compréhension de la liste?
Quelle est la variable
double code> pour?