2015-07-05 3 views
-3

Этот код соответствует project euler problem no.4.Project Euler 4 не работает должным образом

Палиндромное число читается одинаково в обоих направлениях. Самый большой палиндром, полученный из продукта двух двузначных чисел, составляет 9009 = 91 × 99.

Найти самый большой палиндром из продукта двух трехзначных чисел.

Ожидаемый выход 906609, но этот код дает выход 994009.

from array import * 

def is_palindrome(num): 

    a = array('i',[]) 
    j=0 
    while(num>0): 
     a.insert(j,num%10) 
     num=num/10 
     j+=1 
    if(a[0]==a[j-1]): 
     return True 
    else: 
     return False 

a=100 
b=100 
max=0 
c=False 
while(a<=999): 

    while(b<=999): 
     n=a*b 
     c=is_palindrome(n) 
     if(c and n>max): 
      max = n 
     b+=1 
    b=100  
    a+=1  
print(max)  
+1

Я бы предложил указать на проблему. По крайней мере, добавляя ссылку на нее! –

+0

@Noob Извините за это. Спасибо за советы. – wisira

ответ

0

Ваша is_palindrome() функция не так, вы только проверяете, если первый элемент равен последний элемент и возвращение True, если они равны, False, если они не являются.

if(a[0]==a[j-1]): 
    return True 
else: 
    return False 

Очевидно, что это неправильно -

Палиндром является слово, фразу, номер или другая последовательность символов, которая считывает же назад или вперед.

Простое решение для is_palindrome() функция -

def is_palindrome(num): 
    s = str(num) 
    n = len(s) 
    return all(s[i] == s[n-i-1] for i in range(0,int(n/2))) 
0

Вы overthinking ваших палиндромов: P Если палиндром читается одинаково в нападающих и наоборот, просто ... изменить ваш номер ,

def is_Palindrome(num): 
    return str(num) == str(num)[::-1] 

Нарезка с шагом -1 такая же, как и реверсивная.

(Кроме того, как обобщенная вещь с эйлером проекта, но, вероятно, не обязательно для этого вопроса конкретно ... когда вы хотите наибольшее число, не начинайте итерировать снизу, начинайте итерирование сверху, и перерыв когда вам больше не удастся выполнить текущий лучший ответ)

Смежные вопросы