对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。

题目:对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。

分析:首先得出该整数num的立方n。对于这一连串的奇数,我们不能确定它的个数,但我们可以分析出它的个数不会超过这个整数num(这个应该可以理解~)。那么我们就可以得到一个范围那就是1到num之间的奇数,但至于到底有几个呢?好像不好得到。没关系,用for()循环来帮忙。让它遍历从1到num的所以的奇数,用变量sum来存放它们的和,并依次与立方n进行比较,如果相等了,那这就对了,输出来就好了~,如果比n大了,那么就不能再从1开始了,依次向后排从3,5……,就这样,我们就能找出我们所需要得数了,思路是不是很清晰呢?好了,来看看代码~

代码:

 1 #include<stdio.h>
 2 void main()
 3 {
 4     int i,j=0,n,k,sum=0,num,p=1,a[500],f=0,T=1;
 5     printf("输入一个数在2到20之间\n");
 6     scanf("%d",&num);    
 7     n=num*num*num;
 8     for(i=p;i<n;i+=2)
 9     {
10         if(sum<n)
11         {
12             sum+=i;
13             a[j++]=i;
14             f=0;
15         }
16          if(sum==n&&f==0)//
17         {
18             printf("第%d种\n",T++);
19             for(k=0;k<j;k++)
20             {
21                 printf("%5d",a[k]);
22             }
23             printf("\n");
24             f++;
25             j=0;
26             i=p+=2;
27             sum=0;
28             i-=2;
29         }
30          if(sum>n)
31         {
32             j=0;
33             i=p+=2;
34             sum=0;
35             i-=2;
36         }
37     }
38 }

上面这个就是其中一个运行结果啦~

欢迎联系我得qq:2516985331

一起学习~

posted @ 2017-01-14 01:04  祖旭明  阅读(1017)  评论(0编辑  收藏  举报