关于“Euler”中“求600851475143最大的最大质因数”

其实这题对大多数的编程者的最大障碍不是算法,而是怎样将60085147514这个数字正确的输入进去,尝试了几种常见的输入int,long,unsigned long,但是结果都很令人失望,所以只有另找方法。对VC++而言,可以使用_int64这个类型或unsigned _int64,但值得注意的是当我们使用cin输入,cout输出的时候会出现错误,我们使用一下方法来解决:scan("%I64d",a);printf("%I64d",a);如果是unsigned _int64这需要将d改成u。代码如下:

 


#include #include using namespace std; void fun(unsigned _int64 &a) { static unsigned _int64 b=0; if(a==b) a=a; else { for(int i=2;i<=a;++i) if(0==a%i && a!=i) { a=a/i; break; } else if(a==i) b=a; fun(a); } } int main() { unsigned _int64 a=600851475143; fun(a); printf("%I64u",a); return 0; }

 

 

你可能感兴趣的:(关于“Euler”中“求600851475143最大的最大质因数”)