コード例 #1
0
def solve(N):

    for x in count(1):
        all_permuted = True
        for n in [i*x for i in range(2, N+1)]:
            if not is_permuted(n, x):
                all_permuted = False
                break
        if all_permuted:
            return x
コード例 #2
0
def solve(N):
    primes = sieve_eratosthenes(lsqrt(N)*2)
    print_sieve_stats(primes)
    min_frac = N
    min_number = N
    for step in range(1, 500):
        for (p, q) in [(primes[i], primes[i-step]) for i in range(len(primes)-1, step-1, -1)]:
            for (p_power, q_power) in zip(powers_below(p, N), powers_below(q, N)):
                n = p_power*q_power
                if n > N:
                    continue
        
                phi = (p_power - p_power/p)*(q_power - q_power/q)
                if permutation.is_permuted(n, phi):
                    frac = float(n)/phi
                    if frac < min_frac:
                        print(n, p, q, phi, frac, step)
                        min_frac = frac
                        min_number = n
    return min_number