所以我最近几天一直在尝试这个问题,但没有运气。我的任务是找到从 1 到 x 的正方形对。
Num1 + Num2 = 完美平方(即 2 + 2 = 4. 16 + 20 = 36)
Num2 - Num1 = 一个完美的正方形。(即 2 - 2 = 0。20 - 16 = 4)
我已经越来越接近结果,但是对于我的生活来说,我无法弄清楚我的循环中出了什么问题。例如:这是我最新的方法:
测试一个数是否是完美平方的函数:
bool isSquare(int num){
if(num < 0)
return false;
int root = round(sqrt(num));
return num == root * root;
}
主要的:
int num1 = 1; num2 = 2;
int tempP, tempM;
for(int i = 1; i <= number; i++){
for(int j = 1; j <= num1; j++){
tempP = num1 + num2;
tempM = num2 - num1;
if(isSquare(tempP) && isSquare(tempM)){
cout << num1 << "\t" << num2 << "\t" << tempP << "\t" << tempM << endl;
}
num2++;
}
num1++;
}
由于某种原因,我的输出(无论“int number”有多大)被限制为一行。我的其他测试(例如让第二个循环持续到 j <= number)以我的 num1s 重复自己、num2s 超过 number 并打印每个数字直到它停止而结束。
我不知道下一步该去哪里,任何指示都会有所帮助。
谢谢你们
编辑:12的预期输出:
NPN + PP - N
2 2 4 0
4 5 9 1
6 10 16 4
8 8 16 0
8 17 25 9
10 26 36 16
12 13 25 1
12 37 49 25
12的实际输出:
NPN + PP - N
2 2 4 0