对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
//main.c
//auther:yangyang
#include "stdafx.h"
#include "math.h"
void jishu(int a);
int sum = 0;//求和
int start = 1;
int main()
{
while (1)
{
sum = 0;//求和
start = 1;
int a;
printf("\n输入数字:");
scanf_s("%d", &a);
jishu(a);
}
return 0;
}
int number = 0;
void jishu(int a)
{
long int num = pow(a,3);
while (1)
{
number = 0;
for (int i = start;; i++)
{
if (i % 2 == 1)
{
number++;
int tmp = sum;//先前的和
sum += i;//最新的和
if (start >= num)return;//超出直接结束死循环
if (tmp<num&&sum>num)//不等于
{
start += 2;
sum = 0;
//i = start;
break;//跳出本层循环
}
if (sum == num)//等于,符合
{
int tmp1 = start;
for (int j = 0; j < number; j++)
{
printf("%d ", tmp1);
tmp1 += 2;
}
printf("\n");
if (start < num)
{
start += 2;
sum = 0;
break;
}
else return;
}
}
}
}
//printf("%d", num);
}
结果如图,我在里面加入了死循环,这样可以连续输入验证