尼克彻斯定理:
任何一个正整数的立方,都可以表示成若干个奇数的和
这个方法之前不知道在哪看过的,修改了下供大家欣赏,个人觉得代码执行效率挺高,代码精简。
还有另外一种算法,只是验证了尼科斯特定理,并没有全部输出所有奇数,大家可以自行修改再运用。
任何一个正整数的立方,都可以表示成若干个奇数的和
这个方法之前不知道在哪看过的,修改了下供大家欣赏,个人觉得代码执行效率挺高,代码精简。
#include <stdio.h>
int main()
{
int a, b, c, d;
printf("Please Input a num : ");
scanf("%d",&a);
if( (a < 1) || (a > 100))
return -1;
b = a * a * a ;
printf("The num's cube is : %d = ",b);
for (d = 0, c = 0; c < a; c ++)
{
d += a * a - a + 1 + c * 2 ;
printf(c ? "+%d" : "%d", a * a - a + 1 + c * 2 );
}
if(b != d)
return -1;
printf("\n");
}
还有另外一种算法,只是验证了尼科斯特定理,并没有全部输出所有奇数,大家可以自行修改再运用。
#include "stdio.h"
void Nicoqish(int N)
{
int i = 0,j = 0, sum = 0;
for(i = 1; i < N * N * N ;i += 2)
{
for(j = i; j < N * N * N ;j += 2 )
{
sum = sum + j;
if(N * N * N == sum)
{
printf("%d = %d+%d...+%d\n",N * N * N, i,i+2,j);
return;
}
if(N * N * N < sum)
{
sum = 0;
break;
}
}
}
}
int main()
{
int N;
printf("Please input a integer to verify Nicoqish Law\n");
scanf("%d",&N);
Nicoqish(N);
return 0;
}