- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145

|
题目是求证任何一个自然数都可由4个数的平方和来表示
程序如下:
- #include<stdio.h>
- #include<stdlib.h>
- void check(int);
- int main(void)
- {
- int n;
-
-
- scanf("%d",&n);
- check(n);
-
- getch();
- return 0;
- }
- void check(int i)
- {
- int aa[4];
- int t;
-
- t = i;
- for(aa[0]=sqrt(t);aa[0]>=sqrt(t/2);aa[0]--)
- {
- t -= aa[0] * aa[0];
- for(aa[1]=sqrt(t);aa[1]>=sqrt(t)/2;aa[1]--)
- {
- t -= aa[1] * aa[1];
- for(aa[2]=sqrt(t);aa[2]>=sqrt(t)/2;aa[2]++)
- {
- t -= aa[2] * aa[2];
- for(aa[3]=sqrt(t);aa[3]>=sqrt(t)/2;aa[3]++)
- if(aa[0]*aa[0]+aa[1]*aa[1]+aa[2]*aa[2]+aa[3]*aa[3]==i)
- {
- printf("%5d %5d %5d %5d",aa[0],aa[1],aa[2],aa[3]);
- getch();
- exit(0);
- }
- }
- }
- }
- printf("无解 !\n");
- getch();
- }
复制代码 问题:
1)为什么它循环的最大值为什么可以写成 被判断数的一半再开方(sqrt(t/2))
2) 为什么下面又变成了 (sqrt(t)/2)
3) 为什么上两循环都是 --, 而最后两个循环用++呢?
麻烦大大们解释一下。 谢谢了 |
|