scala求1-200直接素数个数
时间: 2024-01-16 16:02:06 浏览: 84
以下是一个Scala程序,用于计算1-200之间的素数数量:
```
object PrimeNumbers {
def isPrime(n: Int): Boolean = {
if (n <= 1) false
else if (n == 2) true
else !(2 to (n-1)).exists(x => n % x == 0)
}
def main(args: Array[String]) {
val count = (1 to 200).count(isPrime)
println(s"There are $count prime numbers between 1 and 200.")
}
}
```
该程序定义了一个`isPrime`函数,用于判断一个整数是否为素数。然后使用`count`方法计算1-200之间素数的数量,并输出结果。
相关问题
用scala编写代码求101-200的素数
以下是使用Scala编写求101-200之间的素数的代码:
```scala
object PrimeNumbers {
def main(args: Array[String]): Unit = {
val start = 101
val end = 200
for (num <- start to end) {
var flag = true
for (i <- 2 until num) {
if (num % i == 0) {
flag = false
}
}
if (flag) {
println(num)
}
}
}
}
```
运行结果如下:
```
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
```
以上代码中,我们使用一个嵌套的for循环,逐个判断101-200之间的每个数字是否为素数,如果是素数则输出该数字。对于每个数字,我们从2开始逐个进行除法计算,如果存在能够整除该数字的因子,则该数字不是素数,否则该数字是素数。
在scala中求100-200之间的全部素数
在Scala中,我们可以使用一种叫做“筛选”(filter)的功能来找出给定范围内的素数。素数是指大于1的自然数中,除了1和它本身以外不再有其他因数的整数。以下是使用Scalaz库(如果项目依赖Scalaz)的一个简单示例,如果没有使用Scalaz,可以使用基本的for循环:
```scala
import scalaz._ // 如果你使用了Scalaz库
// 定义一个函数检查是否为素数
def isPrime(n: Int): Boolean = {
if (n <= 1) false
else n match {
case 2 | 3 => true
case _ if n % 2 == 0 => false
case _ => for (i <- 3 to math.sqrt(n).toInt by 2) yield if (n % i == 0) false else true
}
}
// 使用Scalaz的filterM和range函数求100到200之间的所有素数
val primesInRange = (100 to 200).filterM(isPrime)
primesInRange.toList // 获取结果列表
阅读全文