使用Euclid公式查找所有三元组

时间:2014-09-01 17:00:22

标签: c++ performance pythagorean

我们的课程项目是编写最有效的程序,我们可以查找到达给定数字的所有三元组,其中(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 个答案:

没有答案