尼科彻斯定理可以叙述为:任何一个整数的立方都可以表示成一串连续的奇数的和。需要注意的是,这些奇数一定是连续的,如:1,3,5,7,9...
编写程序时,我们要思考的是,现计算输入数的立方,然后从1开始累计和,累计每次加2保证下个数也为奇数,如果累加和大于立方数时,跳出本次循环。进行下一次的尝试。当找到后,记录开始位置,结束位置。输出,代码如下:
- #include <stdio.h>
-
-
void Nicoqish(int n)
-
{
-
int max = n * n * n;
-
int i,j,sum = 0;
-
for(i=1; i<max; i=i+2){
-
for(j=i; j<max; j=j+2){
-
sum += j;
-
if(sum == max){
-
printf("%d=%d+%d+...+%d\n",max,i,i+2,j);
-
return;
-
}
-
-
if(sum > max){
-
sum = 0;
-
break;
-
}
-
}
-
}
-
}
-
-
-
int main(int argc, char *argv[])
-
{
-
int n;
-
printf("please input a integer to verify nicoqish law\n");
-
scanf("%d",&n);
-
Nicoqish(n);
-
-
return 0;
-
}
执行结果如下:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ gcc 6.8.c
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
please input a integer to verify nicoqish law
200
8000000=701+703+...+5699
阅读(6018) | 评论(0) | 转发(0) |