欧拉计划 52

来源:互联网 发布:网络言情小说女作家 编辑:程序博客网 时间:2024/04/30 14:27

125874和它的二倍,251748, 包含着同样的数字,只是顺序不同。

找出最小的正整数x,使得 2x, 3x, 4x, 5x, 和6x都包含同样的数字。

import timedef get_digit(x):    """ x各位上的数 """    digit = []    while x:        digit.append(x % 10)        x = x // 10    return digit# 1t0 = time.time()num = 1while 1:    digit_2 = get_digit(num * 2)    digit_2.sort()    for i in range(3, 7):        digit_i = get_digit(num * i)        digit_i.sort()        if digit_2 != digit_i:            break    if digit_2 == digit_i:        break    num = num + 1print(num)t1 = time.time()print(t1 - t0)# 2t0 = time.time()num = 1while 1:    digit_2 = get_digit(num * 2)    digit_2.sort()    for i in range(3, 7):        digit_i = get_digit(num * i)        digit_i.sort()        if digit_2 != digit_i:            break    if digit_2 == digit_i:        break    num = num + 1    digit_num = get_digit(num)    if digit_num[-1] == 2:        num = 5 * 10 ** (len(digit_num) - 1)print(num)t1 = time.time()print(t1 - t0)# 3t0 = time.time()num = 1while 1:    digit_2 = get_digit(num * 2)    if sum(digit_2) % 3 == 0 and (0 in digit_2 or 5 in digit_2):        digit_2.sort()        for i in range(3, 7):            digit_i = get_digit(num * i)            digit_i.sort()            if digit_2 != digit_i:                break        if digit_2 == digit_i:            break    num = num + 1    digit_num = get_digit(num)    if digit_num[-1] == 2:        num = 5 * 10 ** (len(digit_num) - 1)print(num)t1 = time.time()print(t1 - t0)# 4t0 = time.time()num = 3while 1:    digit_2 = get_digit(num * 2)    if 0 in digit_2 or 5 in digit_2:        digit_2.sort()        for i in range(3, 7):            digit_i = get_digit(num * i)            digit_i.sort()            if digit_2 != digit_i:                break        if digit_2 == digit_i:            break    num = num + 3    digit_num = get_digit(num)    if digit_num[-1] in [2, 3, 4]:        num = 5 * 10 ** (len(digit_num) - 1) + 1print(num)t1 = time.time()print(t1 - t0)t0 = time.time()num = 3while 1:    digit_2 = get_digit(num * 2)    if 0 in digit_2 or 5 in digit_2:        digit_2.sort()        for i in range(3, 7):            digit_i = get_digit(num * i)            digit_i.sort()            if digit_2 != digit_i:                break        if digit_2 == digit_i:            break    num = num + 3print(num)t1 = time.time()print(t1 - t0)t0 = time.time()num = 3while 1:    digit_2 = get_digit(num * 2)    if 0 in digit_2 or 5 in digit_2:        digit_2.sort()        for i in range(3, 7):            digit_i = get_digit(num * i)            digit_i.sort()            if digit_2 != digit_i:                break        if digit_2 == digit_i:            break    num = num + 3    if str(num)[0] in '234':        num = 5 * 10 ** (len(str(num)) - 1) + 1print(num)t1 = time.time()print(t1 - t0)t0 = time.time()num = 3digit_len = 1while 1:    digit_2 = get_digit(num * 2)    if 0 in digit_2 or 5 in digit_2:        digit_2.sort()        for i in range(3, 7):            digit_i = get_digit(num * i)            digit_i.sort()            if digit_2 != digit_i:                break        if digit_2 == digit_i:            break    num = num + 3    if num > 10 ** digit_len:        digit_len += 1    if int(num / 10 ** (digit_len - 1)) in [2, 3, 4]:        num = 5 * 10 ** (digit_len - 1) + 1print(num)t1 = time.time()print(t1 - t0)
0 0
原创粉丝点击