Задача Диофанта

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Задача Диофанта

Сообщение Daz » 20.09.2004 (Пн) 21:08

Уважаемые программеры !

Помогите,пожалуйста, решить при
помощи VB задачу Диофанта (lll век до н.э.).

"Найти таких три числа, сумма которых, а также
сумма каждой пары этих чисел была бы квадратом
другого числа".

Заранее благодарю :salut:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.09.2004 (Пн) 21:15

Код: Выделить всё
Option Explicit
Sub Main()
Dim i As Long, j As Long, k As Long
For i = 1 To 10000
For j = 1 To i
For k = 1 To j
If (Sqr(i) = Int(Sqr(i))) And _
   (Sqr(j) = Int(Sqr(j))) And _
   (Sqr(k) = Int(Sqr(k))) And _
   (Sqr(i + j) = Int(Sqr(i + j))) And _
   (Sqr(j + k) = Int(Sqr(j + k))) And _
   (Sqr(i + k) = Int(Sqr(i + k))) Then _
   MsgBox i & vbTab & j & vbTab & k
Next: Next: Next
End Sub
Изображение

Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Сообщение Daz » 20.09.2004 (Пн) 21:47

tyomitch писал(а):
Код: Выделить всё
Option Explicit
Sub Main()
Dim i As Long, j As Long, k As Long
For i = 1 To 10000
For j = 1 To i
For k = 1 To j
If (Sqr(i) = Int(Sqr(i))) And _
   (Sqr(j) = Int(Sqr(j))) And _
   (Sqr(k) = Int(Sqr(k))) And _
   (Sqr(i + j) = Int(Sqr(i + j))) And _
   (Sqr(j + k) = Int(Sqr(j + k))) And _
   (Sqr(i + k) = Int(Sqr(i + k))) Then _
   MsgBox i & vbTab & j & vbTab & k
Next: Next: Next
End Sub


А у тебя какие числа получились ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.09.2004 (Пн) 22:45

Daz писал(а):А у тебя какие числа получились ?

Никакие, оно что-то считало минут 10, потом мне надоело, и я вырубил :-)

А модифицированное вот таким вот образом:
Код: Выделить всё
Option Explicit
Sub Main()
Dim i As Long, j As Long, k As Long
Dim i2 As Long, j2 As Long, k2 As Long
For i = 1 To 10000: i2 = i * i
For j = 1 To i: j2 = j * j
For k = 1 To j: k2 = k * k
If (Sqr(i2 + j2) = Int(Sqr(i2 + j2))) And _
   (Sqr(j2 + k2) = Int(Sqr(j2 + k2))) And _
   (Sqr(i2 + k2) = Int(Sqr(i2 + k2))) Then _
   MsgBox i2 & vbTab & j2 & vbTab & k2
Next: Next: Next
End Sub

- выдаёт ответы:
57600, 13689, 1936
75625, 63504, 57600
230400, 54756, 7744
302500, 254016, 230400
480249, 230400, 19600
518400, 17424, 7225
518400, 123201, 17424
627264, 53361, 25600
680625, 571536, 518400
921600, 219024, 30976
1210000, 1016064, 921600
1334025, 1210000, 1016064
1440000, 342225, 48400
1890625, 1587600, 1440000
1920996, 921600, 78400
2073600, 69696, 28900
2073600, 492804, 69696
2509056, 213444, 102400
2722500, 2286144, 2073600
2822400, 670761, 94864
Изображение

Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Сообщение Daz » 20.09.2004 (Пн) 23:55

tyomitch писал(а):
Daz писал(а):А у тебя какие числа получились ?

Никакие, оно что-то считало минут 10, потом мне надоело, и я вырубил :-)



Tyomitch, большое спасибо за участие, но ты
не учел первое условие:
"Найти таких три числа, сумма которых, а также
сумма каждой пары этих чисел была бы квадратом
другого числа".

Диофант утверждает, что задача имеет одно единственное решение.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4160
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.09.2004 (Вт) 17:06

Эти числа: 0, 0, 0.

Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Сообщение Daz » 21.09.2004 (Вт) 17:57

Mikle писал(а):Эти числа: 0, 0, 0.


Юмор оценил, :wink:
а дельное что-нибудь...

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 21.09.2004 (Вт) 18:59

Поправьте меня если я не прав:
Daz писал(а):"Найти таких три числа, сумма которых, а также сумма каждой пары этих чисел была бы квадратом другого числа".
, тоесть нужен алгоритм решения системы:
Код: Выделить всё
a + b + c = d^2
a + b = d^2
a + c = d^2
b + c = d^2

или как?, а то я совсем про другую задачу Диофанта слышал, а про эту впервые
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.09.2004 (Вт) 19:11

Daz писал(а):Tyomitch, большое спасибо за участие, но ты
не учел первое условие:
"Найти таких три числа, сумма которых, а также
сумма каждой пары этих чисел была бы квадратом
другого числа".

Действительно, как-то его проворонил.
Тогда вот:
Код: Выделить всё
Option Explicit
Sub Main()
Dim i As Long, j As Long, k As Long
For i = 1 To 10000
For j = 1 To i
For k = 1 To j
If (Sqr(i + j) = Int(Sqr(i + j))) And _
   (Sqr(j + k) = Int(Sqr(j + k))) And _
   (Sqr(i + k) = Int(Sqr(i + k))) And _
   (Sqr(i + j + k) = Int(Sqr(i + j + k))) Then _
   MsgBox i & vbTab & j & vbTab & k
Next: Next: Next
End Sub


Daz писал(а):Диофант утверждает, что задача имеет одно единственное решение.

Гонит всё твой Диофант ;-)
32 32 17
128 128 68
217 72 72
273 168 88
288 288 153
320 80 41
329 200 200
512 512 272
560 464 65
640 585 144
672 112 57
744 345 280
800 800 425
825 264 136
833 128 128
840 456 385
868 288 288
880 801 720
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.09.2004 (Вт) 19:28

SHURUP писал(а):а то я совсем про другую задачу Диофанта слышал, а про эту впервые

Афаик диофантовы уравнения - это целый класс задач подобного типа.
Их отличительная черта - что у них обычно бесконечно много решений ;-)
Изображение

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 21.09.2004 (Вт) 19:28

Есть у меня подозрение, что среди чисел обязано должно быть отрицательное. Точкой сидения чуствую :-D
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Сообщение Daz » 21.09.2004 (Вт) 19:30

Гонит всё твой Диофант ;-)
32 32 17
128 128 68
217 72 72
273 168 88 Подходит, цифры разные
288 288 153
320 80 41 Вариант Диофанта
329 200 200
512 512 272


Да, действительно гонит :D

А какой код сработал ?

Daz
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 27.12.2003 (Сб) 23:22

Сообщение Daz » 21.09.2004 (Вт) 19:41

tyomitch, спасибо !

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4160
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.09.2004 (Ср) 16:40

Если нужны разные числа - 0, 3, 4.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2004 (Ср) 17:16

Mikle писал(а):Если нужны разные числа - 0, 3, 4.

:-)
Подходит один программист к другому, говорит: "Вася, мне генератор случайных чисел нужен!" Тот ему отвечает, не отрываясь от монитора: "Пятнадцать."
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4160
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.09.2004 (Ср) 17:28

Сорри, имел ввиду 0, 9, 16.
Прикол в том, что тут КАЖДОЕ число - тоже квадрат (тех чисел, что я раньше написал).


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: С.Т., Yandex-бот и гости: 4

    TopList