尼科徹斯定理

驗證尼科徹斯定理,即:任何一個整數的立方都可以寫成一串連續奇數的和。

*問題分析與算法設計
本題是一個定理,我們先來證明它是成立的。
對於任一正整數a,不論a是奇數還是偶數,整數(a×a-a+1)必然爲奇數。

a×a-a+1 = (a-1)xa + 1;奇數乘偶數必爲偶數,在加上1,就是奇數了。
構造一個等差數列,等差數列前n項和Sn = na1 + n(n-1)d/2

數列的首項爲(a×a-a+1),等差數列的差值爲2(奇數數列),則前a項的和爲:
a×((a×a-a+1))+2×a(a-1)/2
=a×a×a-a×a+a+a×a-a
=a×a×a
定理成立。證畢。
通過定理的證明過程可知L所要求的奇數數列的首項爲(a×a-a+1),長度爲a。編程的算法不需要特殊設計,可按照定理的證明過直接進行驗證。

#include <stdio.h>

int main()
{
	int a, b, c, d;
	printf("Please enter a number:");
	scanf("%d", &a); /*輸入整數*/
	b = a * a * a; 
	printf("%d * %d * %d = %d =", a, a, a, b);
	for (d = 0, c = 0; c < a; c++)   /*輸出數列,首項爲a*a-a+1,等差值爲2*/
	{
		d += a * a - a + 1 + c * 2;  /*求數列的前a項的和*/
		printf(c ? " + %d" : "%d", a * a - a + 1 + c * 2);
	}
	if (d == b)
	{
		printf(" Y\n");   /*若條件滿足則輸出“Y”*/
	}
	else
	{
		printf(" N\n");    /*否則輸出“N”*/
	}

	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章