Поиск всех троек по формуле Евклида

Наш классовый проект состоял в том, чтобы написать наиболее эффективную программу, которую мы могли найти, чтобы найти все тройки вплоть до заданного числа, где ни один (a, b, c) не идет выше этого числа, и затем распечатать число сравнений, которые программа сделала, чтобы найти тройки. Формула Евклида кажется наиболее эффективной, но не дает ВСЕХ троек. Я обнаружил, что фактор "k= 3" даст ВСЕ тройки, а не только примитив (дата назначения прошла, и я просто пытаюсь найти лучший алгоритм)

Мой вопрос заключается в том, считает ли мой счетчик все тесты, потому что он говорит мне, что я тестирую только один раз за тройку.

Это мой код

#include <iostream>
using namespace std;

void pythFunc2(int max)
{

    int counter=0;
    for (int n = 1; n <= max; ++n) 
    {
       for (int m = n + 1; m <= max && (m*m + n*n) <= max; ++m) 
       {
            cout<<m<<"+"<<n<<"="<<endl;
            counter++;
            int a = ((m*m)-(n*n));
            int b = (2*m*n);
            int c = ((m*m)+(n*n));
            cout << a << "sqrd + " << b << " sqrd = " << c <<" sqrd." <<endl;
            if(((m*m)-(n*n))*3<=max && (2*m*n)*3 <=max && ((m*m)+(n*n))*3 <= max)
            {
               cout << a*3 << "sqrd + " << b*3 << " sqrd = " << c*3 <<" sqrd." <<endl;
            }
        }
    }
    cout<<"There were "<<counter<<" comparisons."<<endl;
    return;
}

0 ответов

Другие вопросы по тегам