用Scala语言输出一万以内的超级素数

一个素数,依次从最高位去掉一位,两位……若得到的都是素数,且各数字不为0,则称为超级素数。

代码如下:

import scala.math
object Prime{
	def main(args: Array[String]):Unit={ 
		for(i <- 1 to 9999)
			if(depart(i)) println(i)
	}
	
	def isPrime(n:Int):Boolean={ //此方法用于判断素数
		if(n<=1) return false
		for(i <- 2 to math.sqrt(n).toInt){
			if(n%i==0) return false
		}
		true
	}
	
	def length(n:Int):Int={ //此方法用于判断任意数的位数
		var sum:Int = 0
		var tr = n
		while(tr>0){
			tr = tr / 10
			sum = sum + 1
		}
		sum
	}
	
	def depart(m:Int):Boolean={ //此方法用于判断取走高位后是否为素数
		var n = length(m)
		var tr = m
		while(isPrime(tr)&&n>0){
			n = n - 1			
			var x = power(n);
			var k = (tr/x)* x
			tr = tr - k
			if(length(tr)!=n) return false
        }
		if(n==0) return true
		false
	}
	
	def power(n:Int):Int={ //此方法用于计算10的幂次方
		var mi = 1
		for(i <- 1 to n)  mi = mi * 10
		mi
	}
	
}

ps:用pow()函数计算10的幂次方,因为pow()返回值类型是double,把它强行转换为Int型可能会得到不正确的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值