Problem 3
- 投稿者 : rei
Original
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 の素因数のうち最大のものを求めよ。
当てにならないソースコード(C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | using System; namespace ProjectEuler { class Problem3 { const long x = 600851475143; public Problem3() { long answer=0, i, j, rooti, rootx = (long)Math.Sqrt(x); Console.WriteLine(this.ToString()); for (i = 2; i <= rootx; i++) { if (x % i == 0) { bool prime = true; for (j = 2, rooti = (long)Math.Sqrt(i); j <= rooti; j++) { if (i % j == 0) { prime = false; break; } } if (prime) { answer = i; } } } Console.WriteLine("> " + answer); } } } |
外側のループは約数を探すため。
内側のループは素数であるか確かめるためです。
当てにならないソースコード(F#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | let problem3 () = let number = 600851475143L let root = sqrt (double number) |> int64 let isprime n = let mutable p = true let root = int64 (sqrt (double n)) for i in 2L..root do if n % i = 0L then p <- false p [3L..2L..root] |> List.filter (fun i -> number % i = 0L) // 約数のリスト |> List.filter isprime // 素数のリスト |> List.max |> printfn "Problem 3 > %d" |

rei@sikios.com
コメントはまだありません。