您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
可截素数(Truncatable Prime)是指一个素数,当从左到右或从右到左依次截去其数字时,剩下的数仍然是素数。可截素数分为左截素数和右截素数。例如,3797是一个右截素数,因为依次截去右边的数字后,得到的379、37、3都是素数。
判断素数:首先需要实现一个判断一个数是否为素数的方法。素数是指只能被1和它本身整除的数。
截取数字:对于给定的素数,从左到右或从右到左依次截取数字,生成新的数。
验证截取后的数是否为素数:对截取后的数进行素数判断,如果所有截取后的数都是素数,则该数是一个可截素数。
public class TruncatablePrime {
// 判断一个数是否为素数
public static boolean isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 判断一个数是否为右截素数
public static boolean isRightTruncatable(int n) {
while (n > 0) {
if (!isPrime(n)) return false;
n /= 10; // 截去最后一位
}
return true;
}
// 判断一个数是否为左截素数
public static boolean isLeftTruncatable(int n) {
String s = Integer.toString(n);
while (s.length() > 0) {
if (!isPrime(Integer.parseInt(s))) return false;
s = s.substring(1); // 截去第一位
}
return true;
}
public static void main(String[] args) {
int num = 3797;
System.out.println(num + " 是右截素数吗? " + isRightTruncatable(num));
System.out.println(num + " 是左截素数吗? " + isLeftTruncatable(num));
}
}
3797 是右截素数吗? true
3797 是左截素数吗? false
通过上述代码,我们可以判断一个数是否为可截素数。关键在于实现素数判断和数字截取的功能。Java提供了丰富的字符串操作和数学运算功能,使得实现这一算法变得相对简单。通过这种方式,我们可以轻松地找到并验证可截素数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。