Attention quand même, c'est de l'algorithme brutalement systématique, donc très lent. Loin au-delà de la minute sacrée, mais correct. Je concocterai une version plus rapide à mes heures perdues (Arnaud si tu me lis, maintenant tu sauras ce que je fais si tu vois du Python au lieu de voir du Java sur mon écran).
And now for the gory part...
#! /usr/bin/env python
# 2009/02/13 - euler012.py
# Solution au Probleme 12 de Project Euler
# http://projecteuler.net/index.php?section=problems&id=12
# Jean Karim Bockstael - jkb@jkbockstael.be
def trianglenumber(n):
return (n * (n - 1) / 2)
def numberofdivisors(n):
cnt = 1
for i in range (1, n / 2 + 1):
if n % i == 0:
cnt = cnt + 1
return cnt
def euler12(n):
rank = 1
tri = trianglenumber(rank)
while numberofdivisors(tri) <= n:
rank = rank + 1
tri = trianglenumber(rank)
return tri
print euler12(500)
Le lecteur attentif remarquera que ça date d'avant le week-end...
Ce commentaire a été supprimé par un administrateur du blog.
RépondreSupprimer