20 Sep 2011

Euler Project 12 欧拉工程12

收藏到CSDN网摘


The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

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

Let us list the factors of the first seven triangle numbers:

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

We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

翻译:

三角数序列可通过连续自然数求和得到.第7个三角数是1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.前10个三角数是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

列出前7个三角数的因子:

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个因子的三角数.

c++代码,
#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;
    while(n<stop)
    {
        n = 0;
        trinum = 0;
        for(i=1;i<=curnum;i++)
            trinum += i;
        for(i=1;i<=trinum;i++)
        {
            if(trinum%i==0)
                n += 1;
            }
            if(n>=stop)
            {
                result = trinum;
                break;
                }
            if(n>big)
            {
                big = n;
                //printf("Current number: %i [%d]\n",trinum,big);
                }
        curnum++;
    }
   
    printf("%i\n",result);

    return 0;
}

结果:
76576500

No comments :

Post a Comment