Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Возведение в степень с помщью операций умножения


Автор: Verwolf 27.1.2012, 17:54
Подскажите, как можно решить эту задачу:
Дано вещественное число а. Пользуясь только операцией умножения получить  а^19 (а в 19й степени) за 5 операций.

Автор: nworm 27.1.2012, 18:19
(a*a*a*...*a)*(a*a*...*a)
както-то так
там скобки надо расставить

Автор: arcsupport 27.1.2012, 18:40
Вот, смотрите (FreePascal):
Код
{$IFDEF NORMAL}
  {$H-,I-,OBJECTCHECKS-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
  {$H-,I+,OBJECTCHECKS+,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
  {$H-,I-,OBJECTCHECKS-,Q-,R-,S-}
{$ENDIF RELEASE}
var
  a: real;

function power19(a: real) : real;
var
  t1, t2, t3, t4: real;
begin
  t1 := a * a;              (* a^2   --- 1 *)
  t2 := t1 * t1;            (* a^4   --- 2 *)
  t3 := t2 * t2;            (* a^8   --- 3 *)
  t4 := t3 * t3;            (* a^16  --- 4 *)
  power19 := t4 * t1 * a;   (* a^19  --- 6 *)
end;

function power19_2(a: real) : real;
var
  t1, t2, t3, t4: real;
begin
  t1 := sqr(a);             (* a^2   --- 1 *)
  t2 := sqr(t1);            (* a^4   --- 2 *)
  t3 := sqr(t2);            (* a^8   --- 3 *)
  t4 := sqr(t3);            (* a^16  --- 4 *)
  power19_2 := t4 * t1 * a;   (* a^19  --- 6 *)
end;

BEGIN
  readln(a);
  writeln(power19(a) : 15 : 3);
  writeln(power19_2(a) : 15 : 3);
END.
Единственное, что здесь не пять операций умножения, а шесть.

Автор: Lipetsk 30.1.2012, 08:37
да, за 5 операций никак smile

Автор: ksnk 30.1.2012, 08:45
b=a*a ---(a^2)
c=b*b ---(a^4)
d=c*c ---(a^16)

a^19=d*b*a

5 знаков умножения?

Автор: Akina 30.1.2012, 09:04
Цитата(ksnk @  30.1.2012,  09:45 Найти цитируемый пост)
d=c*c ---(a^16)

не-а... a^8

Автор: disputant 30.1.2012, 09:37
См. том 2 Кнута, раздел 4.6.3, теорема B. Она утверждает, что минимально надо 6 умножений. 
Так что если кто сумеет за 5 - от Кнута ему следует 2.56$  smile 

Автор: Mirkes 30.1.2012, 09:38
Цитата(ksnk @  30.1.2012,  08:45 Найти цитируемый пост)
b=a*a ---(a^2)c=b*b ---(a^4)d=c*c ---(a^16)a^19=d*b*a

Новое слово в математике a^4*a^4=a^16! Вообще говоря при умножении показатели степени складываются.
Количество операций умножения можно легко посчитать по двоичному представлению показателя степени:
19=10011. То есть нужно 4 операции для получения 16 степени и еще две для добавления 3 степени.
Можно попробовать другой вариант
1. a^2
2. a^4
3. a^5
4. a^10
5. a^20
6. a^19
Но это все равно 6 операций.
Скорее всего можно доказать что 19 степень за 5 операций поучить нельзя.
Попробуем доказать.
Применяя операцю умножения можно получить только сумму степеней сомножителей.
При этом очевидным максимумом является удвоение степени, когда оба сомножителя являются одинаковой степенью исходного числа.
Рассмотрим двоичное представление степени. Число разрядов -1 плюс число единиц во всех разрядах кроме старшего - это минимальное число операций, необходимое для вычисления нужной степени.
Доказательство.
Поскольку максимальная степень, полученная на очередном шаге есть удвоенная степень предыдущего шага, то минимальное число шагов для получения степени 2^k есть k.
Таким образом для получения степени 16 необходимо как минимум 4 шага.
За один шаг можно добавить либо ноль в двоичную запись степени (удвоить степень) либо одну единицу в любой разряд кроме старшего. Нужно добавить две единицы. Номер не пройдет.
Доказательство не совсем строгое, но думаю вполне достаточное. Можно получить 17, 18, 20, 24, 32 степени, но никак не 19.
Забавно, но для получения 15 степени потребуется тоже 6 операций.
За пять операций можно получить следующие степени (это полный список) 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 24, 32


Автор: disputant 30.1.2012, 10:05
Цитата(Mirkes @ 30.1.2012,  09:38)
За пять операций можно получить следующие степени (это полный список) 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 24, 32

Нет, неполный...

y=x*x*x - 2 умножения
z = y*y   (x^6) 1 умножениt
t = z*z*y  (x^15) 2 умножения

Так что 15 тоже можно за 5 умножений

Автор: Mirkes 1.2.2012, 18:36
Цитата(disputant @  30.1.2012,  10:05 Найти цитируемый пост)
Нет, неполный...
y=x*x*x - 2 умножения
z = y*y   (x^6) 1 умножениt
t = z*z*y  (x^15) 2 умножения
Так что 15 тоже можно за 5 умножений 

Еще одно открытие в математике 6+6+2=15!

Автор: Akina 1.2.2012, 19:31
Цитата(Mirkes @  1.2.2012,  19:36 Найти цитируемый пост)
Еще одно открытие в математике 6+6+2=15! 

Нет, ещё одно открытие - это что 
Цитата(disputant @  30.1.2012,  11:05 Найти цитируемый пост)
y=x*x*x - 2 умножения

даёт 2 степень...

Автор: Mirkes 2.2.2012, 06:44
Цитата(Akina @  1.2.2012,  19:31 Найти цитируемый пост)
Нет, ещё одно открытие - это что 
Цитата

Цитата(disputant @  30.1.2012,  11:05 )y=x*x*x - 2 умножения 
даёт 2 степень... 

Ладно, лоханулся. Но вообще говоря писать надо акуратней, во всех строчках сначала идет степень, а в этой сразу число операций. Стереотип восприятия smile

в качестве компенсации написал программку, которая вычисляет ВСЕ степени с указанием ВСЕХ вариантов получения каждой степени

Код

import java.util.Arrays;
import java.util.Vector;


public class WholeDegree {
    static int num = 0;
    static Vector<OneDegree> deg = new Vector<OneDegree>();

    public WholeDegree() {
        super();
    }

    private class OneDegree {
        int power = 0;
        int oper = 0;
        int iD;
        OneDegree od1, od2;

        public OneDegree(OneDegree d1, OneDegree d2) {
            iD=num++;
            if (d1.power > d2.power) {
                od1 = d2;
                od2 = d1;
            } else {
                od1 = d1;
                od2 = d2;
            }
            power = od1.power + od2.power;
            // Calculate operation quantity
            int[] who = new int[(od1.power+od2.power)*2];
            int n = fillArray(0, who);
            Arrays.sort(who, 0, n);
            oper=0;
            int m=0;
            for (int i=0;i<n;i++){
                if (who[i]!=m){
                    oper++;
                    m=who[i];
                }
            }
//            oper=Math.max(od1.oper, od2.oper)+1;
        }

        public OneDegree() {
            iD=num++;
            power = 1;
            oper=0;
            od1 = null;
            od2 = null;
        }

        public int fillArray(int start,int[] arr){
            arr[start++]=iD;
            if (od1.power>1)
                start=od1.fillArray(start, arr);
            if (od2.power>1)
                start=od2.fillArray(start, arr);
            return start;
        }

        public String getName() {
            return "p" + power;
        }

        public String toString() {
            String res = "";
            int[] who = new int[(od1.power+od2.power)*2];
            int n = fillArray(0, who);
            Arrays.sort(who, 0, n);
            oper=0;
            int m=0;
            OneDegree od;
            for (int i=n-1;i>=0;i--){
                if (who[i]!=m){
                    m=who[i];
                    od=deg.get(m);
                    if (m!=iD)
                        res+="; ";
                    res+=od.getName()+"=" + od.od1.getName() + "*" + od.od2.getName();
                }
            }
            return res;
        }
    }

    public void calcAll(int maxOper) {
        deg.add(new OneDegree());
        OneDegree od1, od2;
        for (int i = 0; i < deg.size(); i++) {
            od1 = deg.get(i);
            if (od1.oper == maxOper) {
                System.out.print(od1);
                System.out.println("   "+Integer.toBinaryString(od1.power));
            } else if (od1.oper < maxOper){
                for (int j = 0; j <= i; j++) {
                    od2 = deg.get(j);
                    if (od2.oper<= maxOper) {
                        deg.add(new OneDegree(od1,od2));
                    }
                }
            }
        }

    }

    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("Usage: java WholeDegree N");
            System.out.println("where N - is maximum degree");
            return;
        }
        int maxPower = Integer.parseInt(args[0]);
        new WholeDegree().calcAll(maxPower);
    }
}


Вот результаты ее работы для числа операций от 1 до 5. Дальше не гонял. В конце двоичное представление степени для проверки моей гипотезы по доказательству. Гипотеза провалилась :(
WholeDegree 1
p2=p1*p1   10

WholeDegree 2
p3=p1*p2; p2=p1*p1   11
p4=p2*p2; p2=p1*p1   100

WholeDegree 3
p4=p1*p3; p3=p1*p2; p2=p1*p1   100
p5=p2*p3; p3=p1*p2; p2=p1*p1   101
p5=p1*p4; p4=p2*p2; p2=p1*p1   101
p6=p3*p3; p3=p1*p2; p2=p1*p1   110
p6=p2*p4; p4=p2*p2; p2=p1*p1   110
p8=p4*p4; p4=p2*p2; p2=p1*p1   1000

WholeDegree 4
p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   101
p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   110
p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   110
p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   110
p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   111
p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   111
p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   111
p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   111
p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   111
p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   111
p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1000
p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1000
p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1000
p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1000
p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1001
p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1001
p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1001
p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1010
p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1010
p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1010
p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1010
p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1100
p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1100
p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1100
p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10000

WholeDegree 5
p6=p1*p5; p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   110
p7=p1*p6; p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   111
p7=p1*p6; p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   111
p7=p1*p6; p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   111
p7=p2*p5; p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   111
p8=p1*p7; p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1000
p8=p1*p7; p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1000
p8=p1*p7; p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1000
p8=p1*p7; p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1000
p8=p1*p7; p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1000
p8=p1*p7; p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1000
p8=p2*p6; p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1000
p8=p2*p6; p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1000
p8=p2*p6; p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1000
p8=p3*p5; p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1000
p8=p3*p5; p5=p1*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1000
p8=p4*p4; p4=p1*p3; p4=p2*p2; p3=p1*p2; p2=p1*p1   1000
p9=p1*p8; p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1001
p9=p1*p8; p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1001
p9=p1*p8; p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1001
p9=p1*p8; p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1001
p9=p2*p7; p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1001
p9=p2*p7; p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1001
p9=p2*p7; p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1001
p9=p2*p7; p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1001
p9=p2*p7; p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1001
p9=p2*p7; p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1001
p9=p3*p6; p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1001
p9=p3*p6; p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1001
p9=p3*p6; p6=p2*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1001
p9=p4*p5; p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1001
p9=p4*p5; p5=p2*p3; p4=p1*p3; p3=p1*p2; p2=p1*p1   1001
p9=p4*p5; p5=p2*p3; p4=p2*p2; p3=p1*p2; p2=p1*p1   1001
p10=p1*p9; p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1010
p10=p1*p9; p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1010
p10=p1*p9; p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1010
p10=p2*p8; p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1010
p10=p2*p8; p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1010
p10=p2*p8; p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1010
p10=p2*p8; p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1010
p10=p3*p7; p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1010
p10=p3*p7; p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1010
p10=p3*p7; p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1010
p10=p3*p7; p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1010
p10=p4*p6; p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1010
p10=p4*p6; p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1010
p10=p4*p6; p6=p3*p3; p4=p1*p3; p3=p1*p2; p2=p1*p1   1010
p10=p4*p6; p6=p3*p3; p4=p2*p2; p3=p1*p2; p2=p1*p1   1010
p10=p5*p5; p5=p1*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1010
p11=p1*p10; p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1011
p11=p1*p10; p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1011
p11=p1*p10; p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1011
p11=p1*p10; p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1011
p11=p2*p9; p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1011
p11=p2*p9; p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1011
p11=p2*p9; p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1011
p11=p3*p8; p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1011
p11=p3*p8; p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1011
p11=p3*p8; p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1011
p11=p3*p8; p8=p4*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1011
p11=p4*p7; p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1011
p11=p4*p7; p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1011
p11=p4*p7; p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1011
p11=p4*p7; p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1011
p11=p5*p6; p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1011
p11=p5*p6; p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1011
p11=p5*p6; p6=p2*p4; p5=p1*p4; p4=p2*p2; p2=p1*p1   1011
p11=p5*p6; p6=p3*p3; p5=p2*p3; p3=p1*p2; p2=p1*p1   1011
p12=p2*p10; p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1100
p12=p2*p10; p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1100
p12=p2*p10; p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1100
p12=p2*p10; p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1100
p12=p3*p9; p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1100
p12=p4*p8; p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1100
p12=p4*p8; p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1100
p12=p5*p7; p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1100
p12=p5*p7; p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1100
p12=p6*p6; p6=p1*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1100
p12=p6*p6; p6=p1*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1100
p12=p6*p6; p6=p2*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1100
p13=p1*p12; p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1101
p13=p1*p12; p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1101
p13=p1*p12; p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1101
p13=p3*p10; p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1101
p13=p4*p9; p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1101
p13=p4*p9; p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1101
p13=p5*p8; p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1101
p13=p5*p8; p8=p4*p4; p5=p1*p4; p4=p2*p2; p2=p1*p1   1101
p13=p6*p7; p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1101
p13=p6*p7; p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1101
p14=p2*p12; p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1110
p14=p2*p12; p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1110
p14=p2*p12; p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1110
p14=p4*p10; p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   1110
p14=p4*p10; p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1110
p14=p4*p10; p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1110
p14=p5*p9; p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1110
p14=p6*p8; p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1110
p14=p6*p8; p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1110
p14=p6*p8; p8=p4*p4; p6=p2*p4; p4=p2*p2; p2=p1*p1   1110
p14=p7*p7; p7=p1*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   1110
p14=p7*p7; p7=p1*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1110
p14=p7*p7; p7=p2*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1110
p14=p7*p7; p7=p2*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1110
p14=p7*p7; p7=p3*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   1110
p14=p7*p7; p7=p3*p4; p4=p2*p2; p3=p1*p2; p2=p1*p1   1110
p15=p3*p12; p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1111
p15=p5*p10; p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   1111
p15=p5*p10; p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   1111
p15=p6*p9; p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   1111
p16=p4*p12; p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10000
p16=p4*p12; p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   10000
p16=p6*p10; p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   10000
p16=p8*p8; p8=p2*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   10000
p16=p8*p8; p8=p2*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   10000
p16=p8*p8; p8=p3*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   10000
p16=p8*p8; p8=p4*p4; p4=p1*p3; p3=p1*p2; p2=p1*p1   10000
p17=p1*p16; p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10001
p17=p8*p9; p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10001
p18=p2*p16; p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10010
p18=p6*p12; p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   10010
p18=p6*p12; p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   10010
p18=p8*p10; p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10010
p18=p9*p9; p9=p1*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10010
p18=p9*p9; p9=p3*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   10010
p18=p9*p9; p9=p4*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   10010
p20=p10*p10; p10=p2*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10100
p20=p10*p10; p10=p4*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   10100
p20=p10*p10; p10=p5*p5; p5=p1*p4; p4=p2*p2; p2=p1*p1   10100
p20=p10*p10; p10=p5*p5; p5=p2*p3; p3=p1*p2; p2=p1*p1   10100
p20=p4*p16; p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10100
p20=p8*p12; p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   10100
p24=p12*p12; p12=p4*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   11000
p24=p12*p12; p12=p6*p6; p6=p2*p4; p4=p2*p2; p2=p1*p1   11000
p24=p12*p12; p12=p6*p6; p6=p3*p3; p3=p1*p2; p2=p1*p1   11000
p24=p8*p16; p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   11000
p32=p16*p16; p16=p8*p8; p8=p4*p4; p4=p2*p2; p2=p1*p1   100000

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)