请帮我分析C:将任意正整数N的立方分解成N个连续的奇数之和,请看补充:

来源:百度知道 编辑:UC知道 时间:2024/06/03 14:35:29
#include <stdio.h>
void dis(int n);
void main()
{int n;
for(;;) {
printf("input num:");
scanf("%d",&n);
if(n==0) exit (0);
dis(n); }
getch();
}
void dis(int n)
{int i,j=0;
for(i=0;i<n;i++)
{j++;
printf("%5d",n*n+i*2-n+1);}/*这一行我想不到,它是运用数学上的哪一个知道,怎样理解?*/
printf("\nThere are %d nums in the program.\n",j);
printf("\n-----------------------------------\n");
}

输入 5 得到 21 23 25 27 29 (5个)
输入 6 得到 31 33 35 37 39 41 (6个)
于是: 算法里:
(1)输入的数就是会分解出来的数的个数
(2)输入的是奇数:则从n^2开始向两边-2 +2
(3)输入的是偶数:则从n^2-1和n^2+1开始向两边-2 +2
(4)其实和起来就是:21+29 23+37 50+50+25=25*5
31+41 33+39 35+37=72*3=36*6