Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2502151
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-05-04 17:54:47

    尼科彻斯定理可以叙述为:任何一个整数的立方都可以表示成一串连续的奇数的和。需要注意的是,这些奇数一定是连续的,如:1,3,5,7,9...
    编写程序时,我们要思考的是,现计算输入数的立方,然后从1开始累计和,累计每次加2保证下个数也为奇数,如果累加和大于立方数时,跳出本次循环。进行下一次的尝试。当找到后,记录开始位置,结束位置。输出,代码如下:
  1. #include <stdio.h>

  2. void Nicoqish(int n)
  3. {
  4.   int max = n * n * n;
  5.   int i,j,sum = 0;
  6.   for(i=1; i<max; i=i+2){
  7.     for(j=i; j<max; j=j+2){
  8.       sum += j;
  9.       if(sum == max){
  10.         printf("%d=%d+%d+...+%d\n",max,i,i+2,j);
  11.         return;
  12.       }

  13.       if(sum > max){
  14.         sum = 0;
  15.         break;
  16.       }
  17.     }
  18.   }
  19. }


  20. int main(int argc, char *argv[])
  21. {
  22.   int n;
  23.   printf("please input a integer to verify nicoqish law\n");
  24.   scanf("%d",&n);
  25.   Nicoqish(n);
  26.   
  27.   return 0;
  28. }
执行结果如下:
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

阅读(5960) | 评论(0) | 转发(0) |
0

上一篇:寻找同构数

下一篇:进程的创建例子

给主人留下些什么吧!~~