Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2015 01:10:11

Aspergo
Зарегистрирован: 2014-08-31
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск троек пифагора

Возник вопрос при решении 9-й проблемы проекта Эйлера. В ней нужно найти числа a,b и с такие, что для них удовлетворяется два требования:

a**2+b**2=c**2
и
a+b+c=1000
.

from math import *
for a in range(4,500):
    for b in range(4,500):
        if a*a+b*b==(1000-a-b)**2:
            print a,b,(1000-a-b), '--->', a*b*(1000-a-b)      

Этот код работает - выдает верный ответ. По идее, тут просто перебираются натуральные целые числа, с шагом 1.
Но числа ведь могут быть не целые, например, если умножить все выражение
a**2+b**2=c**2
на 2 (т.е. каждое число - на корень из 2), a=4.24, b=5.65, c=7.07 и они все еще удовлетворяют теореме!

Отредактировано Aspergo (Апрель 10, 2015 01:15:14)

Офлайн

#2 Апрель 10, 2015 05:26:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Поиск троек пифагора

не понял сути вопроса, у тебя же в условии задачи уже есть такое ограничение

Тройка Пифагора - три натуральных числа a < b < c, для которых выполняется равенство

a2 + b2 = c2
Например, 32 + 42 = 9 + 16 = 25 = 52.

Существует только одна тройка Пифагора, для которой a + b + c = 1000.
Найдите произведение abc.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version