欧拉计划12——高度可分割的三角数

三角形数字的序列是通过将自然数相加而生成的。因此,第7 个三角数将是1 + 2 + 3 + 4 + 5 + 6 + 7 =28。前十个项将是:

1,3,6,10,15,21,28,36,45,55,…

让我们列出前七个三角形数字的因数:

1:1
3:1,3
6:1,2,3,6
10:1,2,5,10
15:1,3,5,15
21:1,3,7,21
28:1,2, 4,7,14,28
我们可以看到28是第一个具有超过5个除数的三角形。

拥有超过500个除数的第一个三角形数的值是多少?
先写一个函数来计算除数个数
在计算除数的个数的时候,要先分析一下简便的方法 sqrt()

#include
#include 
using namespace std;

int div(_int64 n)//余数个数
{
	int i=1,num=0;
	for(i=1;i<=sqrt(n);i++)//加快运算速度
	{
		if(n%i==0)
		{	
			num++;
		}
	}
	return 2*num;//返回两倍
}
void main()
{

	_int64 sum=0,i=1;
	int j=0;
	do
	{
		sum=0;
		for(j=0;j<=i;j++)
		{
			sum+=j;
			
		}
		
		if(div(sum)>=500)
		{
	    	printf("%I64d\n",sum);
			break;
		}
		i++;
	}while(1);
}
	

	

	

你可能感兴趣的:(C++)