圓周素數(Circular Prime)是指一個素數,其所有循環排列也都是素數。例如,197是一個圓周素數,因為197、971和719都是素數。在Java中,我們可以通過編寫一個程序來找到圓周素數。
判斷素數:首先,我們需要一個方法來判斷一個數是否為素數。素數是指只能被1和它本身整除的數。
生成循環排列:對于一個給定的數,我們需要生成它的所有循環排列。例如,197的循環排列是197、971和719。
檢查所有排列是否為素數:對于每個循環排列,我們需要檢查它是否為素數。如果所有排列都是素數,那么這個數就是圓周素數。
輸出結果:最后,我們將所有找到的圓周素數輸出。
import java.util.HashSet;
import java.util.Set;
public class CircularPrime {
// 判斷一個數是否為素數
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 Set<Integer> getCircularPermutations(int n) {
String s = Integer.toString(n);
Set<Integer> permutations = new HashSet<>();
for (int i = 0; i < s.length(); i++) {
String rotated = s.substring(i) + s.substring(0, i);
permutations.add(Integer.parseInt(rotated));
}
return permutations;
}
// 判斷一個數是否為圓周素數
public static boolean isCircularPrime(int n) {
Set<Integer> permutations = getCircularPermutations(n);
for (int p : permutations) {
if (!isPrime(p)) return false;
}
return true;
}
public static void main(String[] args) {
int limit = 1000; // 設置查找范圍
for (int i = 2; i < limit; i++) {
if (isCircularPrime(i)) {
System.out.println(i);
}
}
}
}
運行上述代碼,程序將輸出在指定范圍內的所有圓周素數。例如,在1到1000的范圍內,程序將輸出以下圓周素數:
2
3
5
7
11
13
17
31
37
71
73
79
97
113
131
197
199
311
337
373
719
733
919
971
通過上述步驟和代碼實現,我們可以在Java中找到圓周素數。關鍵在于判斷素數和生成循環排列的方法。通過合理的設計和優化,我們可以進一步提高程序的效率,找到更大范圍內的圓周素數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。