Имя: Пароль:
IT
 
Почти произведение и полный квадрат
0 Ненавижу 1С
 
гуру
20.04.15
12:41
Найти все пары положительных целых чисел (n,k) такие, что число
(n+1)*(n+2)*...*(n+k)-k
является полным квадратом (квадратом целого числа)
1 mikecool
 
20.04.15
12:42
зачем?
2 Nuobu
 
20.04.15
12:51
(0) А есть в 1С функция "КОРЕНЬ"?
3 pessok
 
20.04.15
12:52
Глобальный контекст.Sqrt (Global context.Sqrt)
Глобальный контекст (Global context)
Sqrt (Sqrt)
Синтаксис:

Sqrt(<Число>)
Параметры:

<Число> (обязательный)

Тип: Число.
Аргумент функции. Неотрицательное число.
Возвращаемое значение:

Тип: Число.
Результат вычисления квадратного корня.
Описание:

Вычисляет квадратный корень параметра <Число>.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

При отрицательном значении параметра происходит ошибка "Неправильное значение аргумента встроенной функции (Sqrt)".
Пример:

// Вычисление радиуса шара по площади поверхности
Pi = 3.1415926535897932;
S = 10;
R = Sqrt(S/(4*Pi));
Сообщить("Радиус шара с площадью поверхности = "
    + S + "; равен " + Формат(R,"ЧДЦ=3"));


--------------------------------------------------------------------------------

     Методическая информация
4 pessok
 
20.04.15
12:56
ну и в два цикла этот sqrt. Вот только верхнюю границу бы
5 rphosts
 
20.04.15
12:56
(0) а второе доказательство теоремы Ферма вам не надо?
6 Ненавижу 1С
 
гуру
20.04.15
13:00
(5) а причем тут теорема Ферма?
7 Nuobu
 
20.04.15
13:08
(0) Простым перебором не предлагать?
8 Nuobu
 
20.04.15
13:11
2 и 4
9 Ненавижу 1С
 
гуру
20.04.15
13:14
(8) не понял
10 pessok
 
20.04.15
13:27
а вот что-то тоже не придумывается, хм
11 pessok
 
20.04.15
13:33
+(10) получаются только одинаковые числа почему-то. голодный желудок тупит :)

    Для А = 1 По 100 Цикл
        
        ОбработкаПрерыванияПользователя();
        
        Для Б = 1 По 100 Цикл
            
            ОбработкаПрерыванияПользователя();
            
            МассивДляРасчета = Новый Массив;
            
            Для В = 1 По Б Цикл
                
                МассивДляРасчета.Добавить(А + В);
                
            КонецЦикла;
            
            Рассчет = МассивДляРасчета[0];
            
            Для А = 1 По МассивДляРасчета.ВГраница() Цикл
                
                Рассчет = Рассчет * МассивДляРасчета[1];    
                
            КонецЦикла;
            
            Рассчет = Рассчет - Б;
            
            Корень = Sqrt(Рассчет);
            
            Если Цел(Корень) = Корень Тогда
                
                Сообщить("Пара "+А+" и "+Б+". Значение вычисления: "+Корень);
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЦикла;
12 pessok
 
20.04.15
13:37
там переменные в цикле обнулил криво
13 pessok
 
20.04.15
13:43
в общем вот так вроде бы верно


Для А = 1 По 50 Цикл
        
        ОбработкаПрерыванияПользователя();
        
        Для Б = 1 По 50 Цикл
            
            ОбработкаПрерыванияПользователя();
            
            МассивДляРасчета = Новый Массив;
            
            Для В = 1 По Б Цикл
                
                МассивДляРасчета.Добавить(А + В);
                
            КонецЦикла;
            
            Рассчет = МассивДляРасчета[0];
            
            Для Г = 1 По МассивДляРасчета.ВГраница() Цикл
                
                Рассчет = Рассчет * МассивДляРасчета[Г];    
                
            КонецЦикла;
            
            Рассчет = Рассчет - Б;
            
            Корень = Sqrt(Рассчет);
            
            Если Цел(Корень) = Корень Тогда
                
                Сообщить("Пара "+А+" и "+Б+". Значение вычисления: "+Рассчет+". Корень:"+Корень);
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЦикла;

14 Гобсек
 
22.04.15
06:46
Для А = 1 По 1000 Цикл
        Произв = А;
        Для Б = 1 По 1000 Цикл
            Произв = Произв * (А + Б);
            Корень = Цел(sqrt(Произв));
            Если Корень*Корень = Произв Тогда
                Сообщить(""+ А + " "+ Б+ " "+ Произв);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
15 Гобсек
 
22.04.15
07:01
Для А = 1 По 2000 Цикл
        Произв = 1;
        Для Б = 1 По 2000 Цикл
            Произв = Произв * (А + Б);
            Корень = Цел(sqrt(Произв - Б));
            Если Корень*Корень = Произв - Б Тогда
                Сообщить(""+ А + " "+ Б+ " "+ (Произв - Б));
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
16 Гобсек
 
22.04.15
07:03
Первые 10 строк, которые выдает процедура (15):
1 1 1
1 2 4
4 1 4
9 1 9
16 1 16
25 1 25
36 1 36
49 1 49
64 1 64
81 1 81
17 Гобсек
 
22.04.15
07:07
(16)+ нетривиальное решение (Б > 1) всего одно:
(1+1)*(1+2) - 2 = 4
18 Ненавижу 1С
 
гуру
28.04.15
11:53
Рассмотрим случай k>3
Левую часть рассмотрим как два отдельных множителя
[(n+1)*(n+2)*…*(n+k-3)] * [(n+k-2)*(n+k-1)*(n+k)]
Первый множитель делится на (k-3) и представим его как M*(k-3).
Второй множитель делится на 6, представим его как 6*S.
6*M*S*(k-3)-k=A^2
6*M*S*(k-3)-(k-3)=A^2+3
(6*M*S-1)*(k-3)=A^2+3
В левой части есть нечетный множитель (6*M*S-1), имеющий от деления на 3 остаток 2.
Значит, у него есть простой нечетный множитель p также имеющий от деления на 3 остаток 2. Поэтому оно представимо в виде p=6*t-1.
Теперь посмотрим на правую часть: A^2+3 - она должна делиться на p. К тому же p=6*t-1>3 и A не делится на p.
A^2+3 = (1+A)^2+(1+A)*(1-A)+(1-A)^2
Заменим x = (1+A), y = (1-A)
A^2+3 = x^2+x*y+y^2
x и y имеют разные остатки при делении на p. Иначе x-y = 2*A делится на p.
Если x^2+x*y+y^2 делится на p, то и (x^2+x*y+y^2)*(x-y) = x^3-y^3 делится на p.
Если x^3 и y^3 имеют одинаковые остатки при делении на p, то и
(x^3)^(2*k-1)=x^(6*k-3) и (y^3)^(2*k-1)=y^(6*k-3) имеют одинаковые остатки
С другой стороны, по малой теореме Ферма:
x^(6*k-3)*x = x^(6*k-2) = x^(p-1) имеет остаток 1, аналогично и y.
Но если числа, имеющие одинаковые остатки при делении на простое число, умножили на числа x, y и получили одинаковый остаток произведения 1, то сами эти числа x, y имеют одинаковый остаток. Противоречие
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн