perm = [0,1,2,3,4,5,6,7,8,9] divisors = [1,2,3,5,7,11,13,17] def swap(i,j): k = perm[i] perm[i] = perm[j] perm[j] = k result = 0 count,max = 1,3265920 while count < max: N = len(perm) i = N - 1 while(perm[i-1] >= perm[i]): i = i - 1 j = N while perm[j - 1] <= perm[i -1]: j = j - 1 swap(i - 1, j - 1) i+=1 j=N while(i < j): swap(i - 1, j - 1) i+=1 j-=1 divisible = True for x in range(1,len(divisors)): num = 100 * perm[x] + 10 * perm[x+1] + perm[x+2] if num % divisors[x] != 0: divisible = False break if (divisible): num = 0 for x in range(0,len(perm)): num = 10*num +perm[x] result += num count+=1 print(result)