Algorithme de recherche de tous les diviseurs d'un nombre
📁 fonction, liste, Sujets avancés sur Python, exemple
Bonjour ! En résolvant un problème, j'ai dû trouver en ligne un algorithme pour rechercher tous les diviseurs d'un nombre. C'est-à-dire que pour huit, il faut renvoyer [1,2,4,8], et non [2,2,2] - la liste des diviseurs. J'ai réécrit cet algorithme à nouveau, je demande aux "camarades plus expérimentés" de me conseiller sur la façon de l'améliorer. Si vous avez le temps ))
def divisorss(n): from collections import Counter ls = get_ls(n) # for n=1568 -> ls = [2, 2, 2, 2, 2, 7, 7] pairs = dict(Counter(ls)) # {2: 5, 7: 2} from itertools import product, starmap from operator
Pour les nombres, & désigne le ET bit à bit (). Dans le système binaire, 2 ** n représente un 1 suivi de n zéros, et (2 ** n - 1) représente n uns. Par exemple, (dec) 32 = (bin) 100000, et (dec) 31 = (bin) 11111. Parmi tous les nombres positifs, seules les puissances de deux n'ont pas de uns en commun avec le nombre précédent. Le code contient une erreur : il considère 0 comme une puissance de deux.
Connectez-vous pour laisser une réponse