我们的课程项目是编写最有效的程序来找到所有三元组直到给定的数字,其中 (a,b,c) 都不超过该数字,然后打印出程序为找到三元组所做的比较次数。Euclid 的公式似乎是最有效的,但并未给出所有三元组。我发现“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;
}