码迷,mamicode.com
首页 > 其他好文 > 详细

例30:尼科彻斯定理

时间:2017-01-21 22:29:32      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:printf   for   n+1   i++   lib   ret   class   相加   穷举   

尼科彻斯定理简单来想其实可以是这样,我们假设有一个数N,则他的立方为N*N*N,可以看成为N个N*N在相加,此时若N为奇数,那么则有从N*N-(N-1)/2*2,即为N*N-N+1开始到N*N+N-1为止的奇数相加的值,同样,若为偶数可得出相应的结论从N*N-1-(N/2-1)*2,即为N*N-N+1到N*N+N-1为止。

这和书上的不太一样,但书上的用的好像是穷举的方法,这样算的话,应该比书上的方法要快得多了。明白了这个道理,那么直接开始编程就可以了。

代码如下:

 1 #include<stdio.h> 
 2 #include<stdlib.h>
 3 
 4 void Test(int n)
 5 {
 6     int t,startNumber;
 7     if(n%2 == 0)
 8     {
 9         t = n/2-1;
10         startNumber = n*n-1-t*2;
11     }
12     else
13     {
14         t = n/2;
15         startNumber = n*n - t*2;
16     }
17     printf("%d*%d*%d = %d = %d ",n,n,n,n*n*n,startNumber);
18     for(int i = 1;i<n;i++)
19     printf("+ %d",startNumber+i*2);
20 }
21 
22 int main()
23 {
24     int n;
25     while(~scanf("%d",&n) && n)
26     {
27         Test(n);
28     }
29     return 0;
30 }

 

例30:尼科彻斯定理

标签:printf   for   n+1   i++   lib   ret   class   相加   穷举   

原文地址:http://www.cnblogs.com/FWFC/p/6337707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!