我将如何使用用户输入的对数打印出一对 emirp 数字?
How would I print out a pair of emirp numbers with user input for the number of pairs?
我有一个程序,当用户输入他们想要显示的对数时,我需要打印出 emirp 对。在程序中,我有主要功能和其他三个功能。
//returns true if num is prime
public static boolean isPrime(int num)
//returns the reverse of number
public static int reversal(int number)
//returns true if number is a palindrome
public static boolean isPalindrome(int number)
主函数接受用户输入,然后将用户值传递给另一个打印对的函数。我在这部分迷路了,因为我知道如何在一个范围内打印对,并包括如下所示的重复项,但不包含给定数量的对。如有任何帮助,我们将不胜感激!
public static void printPairs(int pairs) {
for (int i = 0; i < 100; i++) {
int rev = reversal(i);
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
}
}
}
Output: (13,31) (17,71) (31,13) (37,73) (71,17) (73,37) (79,97) (97,79)
像这样?
public static void printPairs(int pairs) {
for (int i = 0; i < 100; i++) {
int rev = reversal(i);
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
if ((pairs--) < 0) {
return;
}
}
}
}
也就是拿到对数就退出?
另外两个建议:不要将自己限制在 100 个以内,仅考虑反转数高于当前数的情况来消除重复项。 (如果它更低,那么它已经被打印出来了)。
public static void printPairs(int pairs) {
int i=10;
while (pairs > 0) {
i++;
int rev = reversal(i);
if (rev<i) {
continue;
}
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
pairs--;
}
}
}
老师一般不喜欢continue语句,可以把condition折叠到main条件语句中。 P.S。 10 是第一个 non-palindrome 个数字。
我有一个程序,当用户输入他们想要显示的对数时,我需要打印出 emirp 对。在程序中,我有主要功能和其他三个功能。
//returns true if num is prime
public static boolean isPrime(int num)
//returns the reverse of number
public static int reversal(int number)
//returns true if number is a palindrome
public static boolean isPalindrome(int number)
主函数接受用户输入,然后将用户值传递给另一个打印对的函数。我在这部分迷路了,因为我知道如何在一个范围内打印对,并包括如下所示的重复项,但不包含给定数量的对。如有任何帮助,我们将不胜感激!
public static void printPairs(int pairs) {
for (int i = 0; i < 100; i++) {
int rev = reversal(i);
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
}
}
}
Output: (13,31) (17,71) (31,13) (37,73) (71,17) (73,37) (79,97) (97,79)
像这样?
public static void printPairs(int pairs) {
for (int i = 0; i < 100; i++) {
int rev = reversal(i);
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
if ((pairs--) < 0) {
return;
}
}
}
}
也就是拿到对数就退出?
另外两个建议:不要将自己限制在 100 个以内,仅考虑反转数高于当前数的情况来消除重复项。 (如果它更低,那么它已经被打印出来了)。
public static void printPairs(int pairs) {
int i=10;
while (pairs > 0) {
i++;
int rev = reversal(i);
if (rev<i) {
continue;
}
if (isPrime(i) == true && isPrime(rev) == true && isPalindrome(i) == false) {
System.out.print("(" + i + "," + rev + ") ");
pairs--;
}
}
}
老师一般不喜欢continue语句,可以把condition折叠到main条件语句中。 P.S。 10 是第一个 non-palindrome 个数字。