Софтуерно Инженерство
Loading...
+ Нов въпрос
Lusien.GG avatar Lusien.GG 66 Точки

Unsolved Math Problem, a^n+b^n=c^n

            Начинаещ съм. 100% съм обеден,че някой на планетата Земя го е пробвал с 1000х по-силен компютър и 1000х по смислен код, но реших да си разнообразя часовете около 3:00-4:00 сутринта и да търся неоткритите от математиците над 300 години числа, изпълняващи уравнението в заглавието(като изключим питагоровите числа).

   

using System;
namespace unsolvedMath
{
    class Problem
    {
        static void Main()
        {

            var length = int.Parse(Console.ReadLine());
            long a;
            long b;
            long c;
            long n;
            for (int i = 1; i <= length; i++)
            {
                c=i;
                for (int o = 1; o <= length; o++)
                {
                    b=o;

                    for (int j = 1; j <= length; j++)
                    {
                        a=j;
                        for (int z = 1; z <= length; z++)
                        {
                            n = z;
                            if (Math.Pow(a, n) + Math.Pow(b, n) == Math.Pow(c, n))
                            {
                                Console.WriteLine("a={0},b={1},c={2},n={3}", a, b, c, n);
                                Console.WriteLine("{0}^{1}+{2}^{1}={3}^{1}", a, n, b, c);
                            }
                        }
                    }
                }
            }
        }
    }
}

Инпута е просто за да пробвам, постепенно с по-големи и по големи числа и да следя какво се случва...

програмката естествено открива всички комбинации при n=1 и  питагоровите числа при n=2, но при по големите стойности започна да се дави. Започна да твърди,че 3^20+20^20=20^20 и още доста такива примери... искам просто да разбера защо се случва това...като цяло безмислено е всичко това, но на мен просто ми е любопитно, защо започва да смята грешно.
Благодаря за отделеното време. :)

 

Тагове:
0
Общи приказки
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Най-вероятно се препълват типовете данни и превъртат.

3
Lusien.GG avatar Lusien.GG 66 Точки

Благодаря smiley

0
dim4o avatar dim4o 288 Точки

Само една забележка: Проблема, за който говориш е решен преди сигурно повече от 10 години. Доказана е доста по-обща хипотеза, която на пръв поглед няма нищо общо с твърдението, но се оказва, че то е частен случай на въпросната хипотеза. 

1
Lusien.GG avatar Lusien.GG 66 Точки

Няма как да мине без забележки. laugh  все пак не знаех и си запълних времето в ранната сутрин. Благодаря за поправката.

0
dim4o avatar dim4o 288 Точки

Според мен не е много инересно, когато знаеш, че в най-добрия случай няма резултат, а иначе излиза грешен резултат. Би била по-забавна програмка, която да се опитва да докаже хипотезата на Голдбах (всяко четно N>2 може да се представи кат сума от 2 прости числа), защото ще се очаква да имаш резултат всеки път. Освен това тази хипотеза наистина още не е доказана и ще има тръпка :)

3
Lusien.GG avatar Lusien.GG 66 Точки

Перфектен си за преподавател в гимназия laugh такива идеи биха заинтригували доста момчета и биха ги насочили към програмирането. Сега съм на работа и ще се занимавам да го направя laugh

0
krokicha avatar krokicha 76 Точки

Ако искаш да пробваш с големи цели числа някой математически проблем използвай bigintiger типа. За да го използваш трябва да добавиш библиотека в началото на програмата:

using System.Numerics;

1