#include <stdio.h>
#include <stdlib.h>
int main(int args, char* argv[])
{
long result=1,trinum=0,curnum=1;
int n=0,i=0,big=0;
int stop = 500; //停止要求的除数个数,改成 5 可以测试 28
while(n<stop)
{
n = 0;
trinum = 0;
// 计算当前三角数
for(i=1;i<=curnum;i++)
trinum += i;
// 从 1 开始除,计算除数个数
for(i=1;i<=trinum;i++)
{
if(trinum%i==0) // 如果整除,n+1
n += 1;
}
if(n>=stop) //如果超过 stop 个,保存结果跳出循环,这里是 500 个
{
result = trinum;
break;
}
//如果没超过 stop 个,记录当前最大的个数并输出
//这个 if 可以不要,因为我运行以为电脑死机了
//所以加了这个判断,找到更接近 stop 的除数个数时输出,让我有点盼头
if(n>big)
{
big = n;
printf("Current number: %i [%d]",trinum,big);
}
//自加自然数增加 1,trinum = sum(1:curnum)
curnum++;
}
// 打印结果
printf("%i",result);