diff --git a/extra/project-euler/046/046.factor b/extra/project-euler/046/046.factor new file mode 100644 index 0000000000..1e7630c142 --- /dev/null +++ b/extra/project-euler/046/046.factor @@ -0,0 +1,52 @@ +! Copyright (c) 2008 Aaron Schaefer. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel math math.functions math.primes math.ranges sequences ; +IN: project-euler.046 + +! http://projecteuler.net/index.php?section=problems&id=46 + +! DESCRIPTION +! ----------- + +! It was proposed by Christian Goldbach that every odd composite number can be +! written as the sum of a prime and twice a square. + +! 9 = 7 + 2 * 1^2 +! 15 = 7 + 2 * 2^2 +! 21 = 3 + 2 * 3^2 +! 25 = 7 + 2 * 3^2 +! 27 = 19 + 2 * 2^2 +! 33 = 31 + 2 * 1^2 + +! It turns out that the conjecture was false. + +! What is the smallest odd composite that cannot be written as the sum of a +! prime and twice a square? + + +! SOLUTION +! -------- + +integer [1,b] [ sq ] map ; + +: fits-conjecture? ( n -- ? ) + dup perfect-squares [ 2 * - ] with map [ prime? ] contains? ; + +: next-odd-composite ( n -- m ) + dup odd? [ 2 + ] [ 1+ ] if dup prime? [ next-odd-composite ] when ; + +: disprove-conjecture ( n -- m ) + dup fits-conjecture? [ next-odd-composite disprove-conjecture ] when ; + +PRIVATE> + +: euler046 ( -- answer ) + 9 disprove-conjecture ; + +! [ euler046 ] 100 ave-time +! 150 ms run / 2 ms GC ave time - 100 trials + +MAIN: euler046 diff --git a/extra/project-euler/092/092.factor b/extra/project-euler/092/092.factor index 1586564387..7e44a509ab 100644 --- a/extra/project-euler/092/092.factor +++ b/extra/project-euler/092/092.factor @@ -1,6 +1,6 @@ -! Copyright (c) 2008 Aaron Schaefer. +! Copyright (c) 2008 Aaron Schaefer, Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math math.ranges project-euler.common sequences ; +USING: kernel math math.ranges sequences ; IN: project-euler.092 ! http://projecteuler.net/index.php?section=problems&id=92 diff --git a/extra/project-euler/common/common.factor b/extra/project-euler/common/common.factor index 09d5f1442d..d1d0c470b9 100644 --- a/extra/project-euler/common/common.factor +++ b/extra/project-euler/common/common.factor @@ -14,7 +14,7 @@ IN: project-euler.common ! log10 - #25, #134 ! max-path - #18, #67 ! nth-triangle - #12, #42 -! number>digits - #16, #20, #30, #34, #35, #38, #43, #52, #55, #56, #92 +! number>digits - #16, #20, #30, #34, #35, #38, #43, #52, #55, #56 ! palindrome? - #4, #36, #55 ! pandigital? - #32, #38 ! pentagonal? - #44, #45 diff --git a/extra/project-euler/project-euler.factor b/extra/project-euler/project-euler.factor index 8cf36d6f44..a322f69e90 100644 --- a/extra/project-euler/project-euler.factor +++ b/extra/project-euler/project-euler.factor @@ -13,10 +13,10 @@ USING: definitions io io.files kernel math math.parser project-euler.ave-time project-euler.033 project-euler.034 project-euler.035 project-euler.036 project-euler.037 project-euler.038 project-euler.039 project-euler.040 project-euler.041 project-euler.042 project-euler.043 project-euler.044 - project-euler.045 project-euler.048 project-euler.052 project-euler.053 - project-euler.056 project-euler.067 project-euler.075 project-euler.079 - project-euler.092 project-euler.097 project-euler.134 project-euler.169 - project-euler.173 project-euler.175 ; + project-euler.045 project-euler.046 project-euler.048 project-euler.052 + project-euler.053 project-euler.056 project-euler.067 project-euler.075 + project-euler.079 project-euler.092 project-euler.097 project-euler.134 + project-euler.169 project-euler.173 project-euler.175 ; IN: project-euler