欧拉项目第3题

题目:

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

What is the largest prime factor of the number 600851475143 ?

 

解这题目有点定向思维了.认为一定要判断素数.

所以敲代码时就啥也不管就把isprime搞定了在说其它了.

这就是让我一点成就感都没有的代码:

public class Test{ public static void main(String args[]){ long n = 600851475143L; int k = (int)Math.sqrt(n); if(0==k%2) k++; for(int i = k; k>0; i-=2){ if(0==n%i) if(isprime(i)){ System.out.println(i); break; } } } public static boolean isprime(long n){ int i; for(i=3;i

 

虽然做了点少优化,但是看到下讨论帖里面贴的代码,真是不一级别的啊.

把这代码贴在下面

public class Task_1 { public static void main(String args[]){ System.out.println(prime(600851475143L)); } public static long prime(long x) { long a = 2; while ( x > 1 ) { if ( ( x % a ) == 0 ) { x = x / a; } else { a++; } } return a; } }
哎有时候还真不能让那点经验把自己的思维禁锢住.

你可能感兴趣的:(欧拉项目第3题)