一个数学问题的Python解决方法

一个正整数n。
它是由数字3和7组成,且这个数以及这个数
各位数字之和都是3和7的倍数,求n的最小值
要有过程。

# coding=utf-8
import numpy as np
x_num = 1
while True:
    x_str = str(x_num)       #数字转换为字符
    x_str_list = list(x_str)    #为将元组转换为列表
    x_str_len = len(x_str_list) #列表元素个数
    x_com=x_num     #为了后续是否因为不满足条件而到导致数字继续推后
    x_str_list_num= map(int, x_str_list)    #将字符数组转化为数字数组
    sum_x=np.sum(x_str_list_num)            #对一位数组进行求和
    for word in x_str_list:                 #字符串字符依次提取
        if ((int(word)==3 or int(word)==7) and (x_num%21==0) and (sum_x%21==0) and ('3' in x_str_list) and ('7' in x_str_list)):
            #该数字必须含有3和7,且这个书是21的倍数,且各个位数之和为3和7的倍数
            continue        #继续本循环
        else:
            x_num = x_num + 21  #如果不满足条件的话,数字后移
            break           #跳出最近的一个循环
    if x_com==x_num:        #如果满足要求,即上一个for循环正常结束,跳出while循环
        break
    else:
        print(x_num)
        continue            #如果条件不满足,继续while循环

print(x_num)
知识兔
结果是:3333377733
计算效率有待提升
知识兔
计算机