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

来源:互联网 发布:淘宝瓜子是什么类目 编辑:程序博客网 时间:2024/05/16 11:28

第三题原文如下:

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 <stdio.h>#include <math.h>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 <iostream>#include <cmath>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++需要考虑数字的大小用什么类型存储,否则会产生越界导致答案错误。


0 0
原创粉丝点击