我試圖讓數字讓我們叫它reversedPrime
顛倒的素數是一個數字,可以是一個素數,它的倒數是質數,例如17
是素數它的倒數71
也是素數其reversedPrime
,我已經寫了一個完整的例子:獲取質數及其作爲素數的反轉
public static void printReversedPrime() {
int NUMBER_OF_REQUiRED = 100;
int NUMBERS_PER_LINE = 10;
int count = 0, number = 1;
while (count < NUMBER_OF_REQUiRED) {
if (isReversedPrime(number)) {
count++;
if (count % NUMBERS_PER_LINE == 0)
System.out.println(number);
else
System.out.print(number + " ");
}
number++;
}
}
private static boolean isReversedPrime(int number) {
return isPrime(number) && nonPalindromicIsPrime(number);
}
private static boolean nonPalindromicIsPrime(int number) {
int digit;
int reserved = 0;
for (int i = 0; i <= number ; i++) {
digit = number % 10;
reserved = (reserved * 10) + digit;
number = number/10;
// System.out.print(reserved);
}
return isPrime(reserved);
}
private static boolean isPrime(int number) {
for (int divisor = 2; divisor <= number/2 ; divisor++) {
if (number % divisor == 0){ // if true number is not prime
return false;
}
}
return true;
}
我執行程序,但我有一個奇怪的了,說,我應該像一些事情:
13 17 31 37 71 73 79 97 107 113 149 157 167 179 199 311 337 347 359 389
b UT我越來越:
11 22 33 55 77 11111 33113 77117 99133299211331 77337 11433477433599511677611771 33773 99779 33899877997 110330770990331113 772113131 773137 993994115775336776337173 997179 118119191
我做了什麼錯?
也許有人指點我?
是在方法'print語句nonPalindromicIsPrime'打算?我猜你的輸出會受到它的影響 – Parag
你正在減少nonPalindromicIsPrime中的數字,同時保持條件爲I <=數字。您應該使用while循環代替 – Assafs
感謝您指出,我忘了刪除該打印語句。 @Assafs確實在使用while循環,但是爲了得到正確的結果而改變了它 – user1058652