J'ai créé un code qui crache les nombres premiers jusqu'au 10001ème nombre. Il prend actuellement 4 lignes de code, et se demandait si je pouvais condenser plus loin? C'est ici;Existe-t-il un moyen de condenser une boucle for-else en Python?
for i in range(3,104744,2):
for x in range(3,int(i/2),2):
if i % x == 0 and i != x: break
else: print(i)
Je suis conscient du fait que le code de condensation trop est généralement pas une bonne chose, mais se demandait s'il était possible.
Merci.
Ce code ne produira jamais '2', ce qui est un nombre premier. – kindall
J'ai essayé d'appliquer la loi de DeMorgan à votre instruction 'if' (' i% x == 0' est fonctionnellement 'pas i% x' donc vous avez deux' not's qui peuvent être factorisés et 'and' changés en' ou' ...) aboutissant à 'if not (i% x ou i == x): break' ... mais c'est le même nombre de caractères! – kindall
Vous pourriez essayer de tout mettre dans une liste de compréhension. – agaidis