2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Программа на GO работает нестабильно
Сообщение03.03.2023, 14:21 


21/04/22
356
Написал программу на GO, в которой реализовал этот алгоритм:
mathematician123 в сообщении #1583771 писал(а):
В случае $n \equiv 2 \pmod{8}$ мне удалось найти решения для всех $n < 50$. Для $n = 50$ получается уравнение
$$ x^2 - (2500s^2-1)y^2 = - 2s^3$$
При этом, $s \equiv 1 \pmod{4}$, $s \equiv 0 \pmod{3}$ или $s \equiv 1 \pmod{3}$, $y \equiv 1 \pmod{2}$, $y < \frac{s}{7}$. Для $s \le 50000$ решений нет.

Код:
Код:
package main

import (
   "fmt"
   "math/big"
)

func main() {
   var s int64
   var y int64
   var mul int64
   var limit int64 = 100000
   var n int64
   is_find := 0

   fmt.Scanln(&n)

   for s = 1; s < limit; s += 4 {
      if is_find == 1 {
         break
      }
      if s%5000 == 1 {
         fmt.Println(s)
      }

      if (s%9 == 3) || (s%9 == 6) {
         continue
      }
      if (s%7 == 0) && (s%49 != 0) {
         continue
      }
      if s%3 == 0 {
         mul = 27
      } else {
         mul = 1
      }

      for y = 1; y < s/6; y += 2 * mul {
         sBig := big.NewInt(s)
         yBig := big.NewInt(y)
         v1 := big.NewInt(s)
         v1.Mul(v1, sBig)
         v1.Mul(v1, big.NewInt(n*n))
         v1.Sub(v1, big.NewInt(1))
         v1.Mul(v1, yBig)
         v1.Mul(v1, yBig)
         v2 := big.NewInt(s)
         v2.Mul(v2, sBig)
         v2.Mul(v2, sBig)
         v2.Mul(v2, big.NewInt(2))
         v1.Sub(v1, v2)

         if v1.Cmp(big.NewInt(0)) == -1 {
            continue
         }

         v2.Sqrt(v1)
         v2.Mul(v2, v2)

         if v1.Cmp(v2) == 0 {
            fmt.Println(s, y)
            is_find = 1
            break
         }
      }
   }
}

Программа работает нестабильно. Например, при вводе 42 она иногда печатает строку с решением "1765 27", а иногда почему-то не печатает. Как сделать так, чтобы строка с решением всегда печаталась?

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 14:58 


05/09/16
12055
А если после строки fmt.Scanln(&n) добавить строку с fmt.Println("n=", n-1) то что печатает после "n=" когда ответ не печатает?

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 15:18 


21/04/22
356
wrest
Печатает -1. А когда всё нормально, печатает 41. Получается, $n$ иногда к нулю приравнивается.

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 15:22 


05/09/16
12055
mathematician123 в сообщении #1584088 писал(а):
Печатает -1. А когда всё нормально, печатает 41. Получается, $n$ иногда к нулю приравнивается.

Типа того.

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 15:31 


21/04/22
356
Похоже дело не в программе, а в том, как я её запускаю. Проблема возникает когда я в командной строке ввожу "go run main.go", а затем "42". Сейчас я ввёл "go build main.go" и в папке появился файл "main.exe". Этот файл при запуске всегда правильно отрабатывает.

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 15:45 


05/09/16
12055
mathematician123
Ну, всегда полезно контролировать, что именно программа получает на вход. Особенно если работает не как ожидается. И ещё более особенно, если осуществляется конвертация типов.

 Профиль  
                  
 
 Re: Программа на GO работает нестабильно
Сообщение03.03.2023, 16:18 


21/04/22
356
Спасибо!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group