|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
int i, j, n, cubed, sum = 0;
printf("请输入一个整数:");
scanf("%d", &n);
cubed = n * n * n;
for (i = 1; i < cubed; i += 2)
{
for (j = i; j < cubed; j += 2)
{
sum += j;
if (sum == cubed)
{
if (j - i > 4)
{
printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
}
else
{
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
}
goto FINDIT;
}
if (sum > cubed)
{
sum = 0;
break;
}
}
}
FINDIT:
return 0;
}
红区不懂
(1)为什么用循环的嵌套
(2)j-i>4
(3)printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
本帖最后由 额外减小 于 2022-9-7 22:38 编辑
先看尼。。。定理的内容:大于3的整数的3次方可表示为一串连续奇数的和
for (i = 1; i < cubed; i += 2) 第一个循环的目的:遍历所有的奇数,i作为数列的起始数
for (j = i; j < cubed; j += 2)第2个循环的目的:测试当i作为起始数时可否满足尼..定理。
例如
3^3=27,1+3=4,1+3+5=9,...,1+3+...+7=16,1+...+9=25,1+...+11=36,超过了27,舍去,i换成3继续试数
就这样一直换一直换,直到i=7,
|
|