Форум » Системы счисления » №14 (7005) Не сходиться с ответом, не понимаю в чем моя проблема? » Ответить

№14 (7005) Не сходиться с ответом, не понимаю в чем моя проблема?

Алексей21: Вроде с условием разобрался, но с ответом не сходится, помогите разобраться в чем моя проблема? def p(b): return b>1 and all(b%i!=0 for i in range(2,int(b**0.5)+1)) for x in range(19): for y in range(19): a=5*12**4+x*12**3+9*12**2+x*12**1+4*12**0 + 7*14**3+x*14**2+x*14**1+6*14**0 \ + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 + 3*19**3+y*19**2+x*19**1+7*19**0 if p(x) and p(y): print(x,y,x*y)

Ответов - 7

Aleksey6819: 5x9x412 + 7xx614 + 55xx816 – 3yx719 5x9x412 - x<12 7xx614 - x<14 55xx816 - x<16 3yx719 - x<19 Значит x может быть от 0 до 12, for x in range(12) 3yx719 - y<19 Значит y может быть от 0 до 19, for y in range(19)

Алексей21: Поставил 12 и 19 в range, ответ получается 187, а должен быть 170. по смыслу понимаю, что х и у разные в каждой системе счисления из-за основания. но все равно не понимаю, как получили 170. def p(b): return b>1 and all(b%i!=0 for i in range(2,int(b**0.5)+1)) for x in range(12): for y in range(19): a=5*12**4+x*12**3+9*12**2+x*12**1+4*12**0 + 7*14**3+x*14**2+x*14**1+6*14**0 \ + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 + 3*19**3+y*19**2+x*19**1+7*19**0 if p(x) and p(y): print(x,y,x*y)

Aleksey6819: Задание: Определите все пары (x, y), при которых значение данного арифметического выражения является простым числом. Алексей21 пишет: if p(x) and p(y): В вашей программе значение выражения - переменная a, а Вы зачем-то проверяете x и y.


Алексей21: def p(b): return b>1 and all(b%i!=0 for i in range(2,int(b**0.5)+1)) for x in range(12): for y in range(19): a=5*12**4+x*12**3+9*12**2+x*12**1+4*12**0 + 7*14**3+x*14**2+x*14**1+6*14**0 \ + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 - 3*19**3+y*19**2+x*19**1+7*19**0 if p(a): print(x,y,x*y)

Aleksey6819: Алексей21 пишет: + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 - 3*19**3+y*19**2+x*19**1+7*19**0 Должно быть: + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 - (3*19**3+y*19**2+x*19**1+7*19**0) или: + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 - 3*19**3-y*19**2-x*19**1-7*19**0 Исправленная программа: [pre2]def p(b): return b>1 and all(b%i!=0 for i in range(2,int(b**0.5)+1)) pr=1 for x in range(12): for y in range(19): a=5*12**4+x*12**3+9*12**2+x*12**1+4*12**0 + 7*14**3+x*14**2+x*14**1+6*14**0 \ + 5*16**4+5*16**3+x*16**2+x*16**1+8*16**0 - (3*19**3+y*19**2+x*19**1+7*19**0) if p(a): pr=max(pr, x*y) print(pr)[/pre2]

Алексей21: Понял, Спасибо. Математика подвела вычел часть выражения, а не все. Еще работать и работать.

Ж: [pre2] from itertools import * from math import * deliteli=lambda n: [c for c in range(2,ceil(n**0.5+1)) if n%c==0] l=[] al='0123456789abcdefghijklmnopqrstuvwxyz' for x,y in product(al[:12],al[:19]): a=int(f'5{x}9{x}4',12) + int(f'7{x}{x}6',14) + int(f'55{x}{x}8',16) - int(f'3{y}{x}7',19) if deliteli(a)==[]: l.append(int(x,12)*int(y,19)) print(max(l))[/pre2]



полная версия страницы