欧拉计划---0003 Largest prime factor(找出一个合数的最大质数因子)

第三题原文如下:

Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

翻译过后如下:

找出一个合数的最大质数因子

13195的质数因子有5,7,13和29.

600851475143的最大质数因子是多少?

python代码:

def FoundBigPrime():
    num = 600851475143
    max = 0

    for i in xrange(2, int(math.sqrt(num)+1)):
        while num % i == 0:
            num = num / i
            if max < i:
                max = i
    print max



c代码:

#include 
#include 

int main()
{
    int i = 2;
    long long num = 600851475143;           //由于数字过大已经超出了int和long的表示范围,所以使用long long来表示
    long long sx = int(sqrt(600851475143)+1);
    int max = 0;
    for (; i < sx; i++)
    {
        while (num % i == 0)
        {
            num /= i;
            if (max < i)
            {
                max = i;
            }
        }
    }
    printf("%d\n", max);

    return 0;
}


c++代码:

#include 
#include 
using namespace std;

int main()
{
    long long num = 600851475143;           //由于数字过大已经超出了int和long的表示范围,所以使用long long来表示
    long long sx = int(sqrt(600851475143)+1);
    int max = 0;
    for (int i = 2; i < sx; i++)
    {
        while (num % i == 0)
        {
            num /= i;
            if (max < i)
            {
                max = i;
            }
        }
    }
    cout << max << endl;

    return 0;
}


这上面是我自己写的代码,之后有时间了会想想如何继续优化


本题的正确答案:6857


总结:

python会将数字转换成BigData,但对于C和C++需要考虑数字的大小用什么类型存储,否则会产生越界导致答案错误。


你可能感兴趣的:(Test)