Summarize primes: Difference between revisions
Content added Content deleted
Line 1,500: | Line 1,500: | ||
</pre> |
</pre> |
||
=={{header|Scala}}== |
=={{header|Scala}}== |
||
<syntaxhighlight lang="scala"> |
<syntaxhighlight lang="scala">object PrimeSum extends App { |
||
⚫ | |||
val oddPrimes: LazyList[Int] = 3 #:: LazyList.from(5, 2) |
|||
.filter(p => oddPrimes.takeWhile(_ <= math.sqrt(p)).forall(p % _ > 0)) |
|||
val primes = 2 #:: oddPrimes |
|||
def isPrime(n: Int): Boolean = { |
|||
if (n < 5) (n | 1) == 3 |
|||
else primes.takeWhile(_ <= math.sqrt(n)).forall(n % _ > 0) |
|||
} |
|||
val limit = primes.takeWhile(_ <= 1000).length |
|||
val number = (1 to limit).filter(index => { |
|||
val list = primes.take(index) |
|||
val sum = list.sum |
|||
val flag = isPrime(sum) |
|||
if (flag) println(f"$index%3d ${list.last}%3d $sum%5d") |
|||
flag |
|||
}).length |
|||
println(s"\nfound $number such primes") |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> 1 2 2 |
||
2 3 5 |
|||
4 7 17 |
|||
6 13 41 |
|||
12 37 197 |
|||
14 43 281 |
|||
60 281 7699 |
|||
64 311 8893 |
|||
96 503 22039 |
|||
100 541 24133 |
|||
102 557 25237 |
|||
108 593 28697 |
|||
114 619 32353 |
|||
122 673 37561 |
|||
124 683 38921 |
|||
130 733 43201 |
|||
132 743 44683 |
|||
146 839 55837 |
|||
152 881 61027 |
|||
158 929 66463 |
|||
162 953 70241 |
|||
found 21 such primes |
|||
</pre> |
</pre> |
||