第三题原文如下:
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++需要考虑数字的大小用什么类型存储,否则会产生越界导致答案错误。