验证尼科彻斯定理:任何一个大于2的整数的立方都可以表示成一串连续奇数的和

/*
    题目:验证尼科彻斯定理:任何一个大于2的整数的立方都可以表示成一串连续奇数的和, 
    例如:3 ^ 3 = 7 + 9 + 11; 
*/
#include <stdio.h> int main() { int sum=0; int n; int cube; printf("请输入一个整数:"); scanf("%d",&n); cube = n * n * n; int i,j=0; for(i=1; i<cube; i+=2) //外循环:从1至count循环出所有奇数串的第一个数 { for(j=i; j<cube; j+=2) //内循环:接收外循环的i值作为循环的初始值,进行连续奇数和的计算,若得出的和等于立方和就输出 { sum+=j; if(sum==cube) { if(j-i>4) { printf("%d = %d + %d +...+%d\n",cube,i,i+2,j); } else { printf("%d = %d + %d + %d\n",cube,i,i+2,i+4); } goto out; } if(sum>cube) { sum=0; break; } } } out: return 0; }

  

  思路:输入一个数,先算出立方值。然后做两层循环,外循环寻找连续奇数的首位数,将首位数交给内循环,进行奇数串求和运算。若sum大于立方值,sum归0,回到外循环,将首位数+2,内循环将会以新数继续寻找奇数串。若找到sum=立方值,输出。

 

  
  

 

posted @ 2017-02-04 20:34  早发现早治疗  阅读(803)  评论(0)    收藏  举报