猫扑素数的定义
所谓猫扑数:
指以2开头,后面跟任意个3的十进制数。如:2、23、233等。
素数是指:
在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为素(质)数。
因此,猫扑素数即上述两种概念的交集,即该集合中的数字既是猫扑数,也是素数。
猫扑素数的实现
// 判断i是否是猫扑数
private boolean isMopNumber (int i ){
if (i < 10 ) return i == 2;
else return (i % 10 == 3 ) && isMopNumber (i / 10 );// 很巧妙的算法,根据猫扑数特点:最开头是2,后面是任意个3,利用递归进行判断
}
// 判断i是否为素数
private boolean isPrime(int i){
if(i < 2) return false;
else {
for(int j = 2; j < Math.sqrt(i); j++){// sqrt求i的平方根
if(i % j == 0){
return false;
}
}
return true;
}
}
// 测试函数,列出1~1000之间的猫扑素数
private void test(){
for(int i = 0; i <= 1000; i++){
if(isMopNumber(i) && isPrime(i))
Log.d(TAG, i + " is mopNumber and primeNumber!");
}
}
以上就是猫扑素数的求解过程了,主要是对概念的认识,其次判断猫扑数的算法也值得思考。