我试图找到 x 的所有组合,其中 x = a^2 + b^2,x 介于 100 和 999 之间。
到目前为止,我有:
#include <stdio.h>
#include <stdlib.h>
#define MAX 31 // given that 31^2 = 961
int main(){
int i = 0;
int poss_n[] = {0};
for (int a=0; a <= MAX; a++){
for (int b=0; b <= MAX; b++){
if (a*a + b*b >= 100 && a*a + b*b <= 999){
poss_n[i] = a*a + b*b;
printf("%i\n", poss_n[i]);
i++;
}
}
}
}
然而,它只给出部分正确的输出,并且过早地以分段错误 11 结束:
100 1380405074 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961 101 122 145 170 197 226 257 290 325 362 401 442 485 530 577 626 677 730 785 842 901 962 104 125 148 173 200 229 260 293 328 365 404 445 488 533 580 629 680 733 788 845 904 965 109 130 153 178 205 234 265 298 333 370 409 450 493 538 585 634 685 738 793 850 909 970 116 137 160 185 212 241 272 305 340 377 416 457 500 545 592 641 692 745 800 857 916 977 106 125 146 169 194 194 221 250 250 281 314 349 349 386 425 466 554 601 554 601 650 701 650 701 754 809 866 866 866 925 925 986 100 117 100 117 136 136 136 157 136 157 180 180 205 261 292 261 292 292 261 292 292 292 292 292 292 292 292325 360 397 436 477 520 分段错误:11
我应该对我的代码进行哪些修改?
更新
除了数组问题,我的代码还有什么问题吗?例如,它仍然打印 100 作为第一个值,它似乎不是 a^2 + b^2 的任何组合,即使 b = 0 也是如此。
更新 2
没关系,忘了a = 10,b = 0,这将是100。