|
5鱼币
编程验证任意一个整数的立方都可以化成一串连续奇数的和。第三十五行
- #include <stdio.h>
- int x,k=0;
- long y,i,j,sum=0l,start,stop;
- int main(){
- void plusDecompose(long n); //正数拆分
- void minusDecompose(long m);//负数拆分
-
- printf("请输入一个整数:\n");
- scanf("%d",&x);
- y=x*x*x;
- printf("%d的立方为%d\n",x,y);
- if(x>0)
- plusDecompose(y);
- if(x<0)
- minusDecompose(y);
- if(x==0)
- printf("0=(-1)+1\n");
- return 0;
- }
- void plusDecompose(long n){
- for(i=1l;i<=n;i=i+2){
- start=i;//连续奇数起始数
- j=i;
- for(sum=j;sum<=n;sum=sum+j){
- if(sum=n){ //可分解
- k=1;/*标记 是否有满足条件的一串连续奇数,没有k为初值,有k赋值1*/
- stop=j;//连续奇数结束数
- printf("%d",j);//????j=1,不知道为什么,求解,
- sum=n+1;//跳出第一层循环
- i=n+1;//跳出第二层循环
- }
- j=j+2;
- }
- }
- j=0;//计数换行
- if(k==1){//
- printf("%9d=%6d",n,start);
- j++;
- for(i=start+2;i<=stop;i=i+2){//输出满足条件的连续奇数
- printf("+%5d",i);
- j++;
- if(j%10==0)
- printf("\n ");
- }
- printf("\n");
- printf("定理成立\n");
- }
- else if(k==0)
- printf("定理不成立\n");
- }
-
-
-
- void minusDecompose(long m){
- for(i=-1l;i>=m;i=i-2){
- start=i;
- j=i;
-
- for(sum=j;sum>=m;sum=sum+j){
- if(sum=m){
- k=1;
- stop=j;
- sum=m-1;
- i=m-1;
- }
- else
- j=j-2;
-
- }
- }
- j=0;
- if(k==1){
- printf("%9d=%6d",m,start);
- j++;
- for(i=start+2;i<=stop;i=i+2){
- printf("+(%5d)",i);
- j++;
- if(j%10==0)
- printf("\n ");
- }
-
- printf("\n");
- printf("定理成立\n");
- }
-
- else if(k==0)
- printf("定理不成立\n");
-
- }
复制代码
|
最佳答案
查看完整内容
32行
if(sum=n)
改为
if(sum==n)
后同
|