可截素數(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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。