Python:Project Euler 145

我今天的问题是,我是否沿着正确的欧拉145道路行驶,并且是否有点效率。我的大部分精力都在下降,只有我的一个Defs给我带来了麻烦:int(str(numb)[:i])%2 == 0进行均匀检查。我的代码如下。第10行是问题点


def reversed(reg): # to flip the number around

    fliped = str(reg)[::-1];

    return(int(fliped)); # Return it as a int. 


def allEvenDigits(numb): # This is the issue one

    hasEvenNumb = False;

    for i in range(0, len(str(numb))):

        if int(str(numb)[:i])%2 == 0:  # if int of the string numb's char at i is even

            hasEvenNumb = True; ## return that it is true

            break; # why go on if we found a even. 

    return(hasEvenNumb);



for i in range(1, 1000): # its 1000 to save a few minutes

    revNumb = reversed(i);

    total = revNumb+i;

    if(allEvenDigits(total)):

        print(i, "+" , revNumb, "=",Total);


森林海
浏览 197回答 3
3回答

子衿沉夜

def sumrevers(x):    summation = x + int(str(x)[::-1])    if summation % 2 != 0: return summationdef checknum(x):    if not (str(x)[-1] == "0") or (str(x)[0] == "0"):        if type(sumrevers(x)) == int:            num = str(sumrevers(x))            checklis = [k for k in str(num)]            if all(int(i) % 2 != 0 for i in checklis): return Truecnt = 0for i in xrange(1, 1000000001):    if checknum(i):        cnt += 1print cnt
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python