2011-06-19 4 views
0

Im new to javaと私は文字列と唯一の方法を使用せずに素数回文をどのように印刷するのだろうと思っていました。Javaのpalindrome numbers

これはこれまで私が行ってきたことです。私は50の前にすべての素数の回文番号を印刷したいと思います。私は素数だけでこれを行いました。それは働いていましたが、私が回文を追加したときに機能しませんでした。

EDIT:私はオリジナルのint = numberに答えを示すように追加しましたが、出力は常に2,3,5,7,11などです。

EDIT2(1質問以上):私は値を1000まで変更し、出力は2 3 5 7 11 313 353 373 383 727 757 787 797 919 929です。出力は正しいですが、 151,181,191もパリンドロームの素数ですか?なぜ彼らは出力に含まれていないのですか?

public class primePalindrome { 
public static void main (String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter a number"); 
    int num = input.nextInt(); 
    System.out.println("The prime palindrome numbers are \n"); 
    printPP(num); 
} 

public static void printPP(int numberOfPP) { 
    final int NUMBER_OF_PP_PER_LINE = 10; 
    int count = 0; 
    int number = 2; 

    while (number < numberOfPP) { 
     if(isPrime(number) && isPalindrome(number)) { 
      count++; 

      if (count % NUMBER_OF_PP_PER_LINE ==0) { 
       System.out.printf("%-5s\n", number); 
      } 
      else 
       System.out.printf("%-5s", number); 
     } 
     number++; 
    } 
} 

public static boolean isPrime(int number) { 
    for (int divisor = 2; divisor <= number/2; divisor++) { 
     if (number % divisor == 0) { 
      return false; 
     } 
    } 
    return true; 
} 

public static boolean isPalindrome(int number) { 
    int reverse = 0; 
    int n = number; 
    for (int i = 0; i <= number; i++) { 
     int remain = number%10; 
     number = number/10; 
     reverse = reverse*10+remain; 
    } 
    if (reverse == n) { 
     return true; 
    } 
} 
     return false; 

} 

}

+0

どうしましたか?予期しない結果(どのような結果が得られましたか?)コンパイルエラー(どちらのエラー)?具体的に。 – SJuan76

答えて

1

あなたは近かったです。最後に、番号を逆に比較します。残念ながら、番号は変更されています。番号の元の値と比較する必要があります。ここに私の修正版です:

public static boolean isPalindrome(int number) { 
    int original = number; 
    int reverse = 0; 
    for (int i = 0; i <= number; i++) { 
     int remain = number % 10; 
     number = number/10; 
     reverse = reverse * 10 + remain; 
    } 
    return reverse == original; 
} 
+0

詳細情報:http:// stackoverflow。com/questions/199184/what-do-i-check-if-a-palindrome – hoipolloi

2

が唯一の2桁の素数回文あります:11は、他のすべての2桁の数字は、あなたの出力は、このように正確である11で割り切れます。

あなたのisPalindromeは非常に近いです。 1)ループの外側で等価性チェックを移動してください。 2)whileループを使用してください。回文パターン1X1を省略で結果「を」使用するなど 3 2XX2)Dont'tは、引数保存するのを忘れ:上記の回答のほとんどが正の両方のために動作しませんので

public static boolean isPalindrome(int number) { 
    int original = number; 
    int reverse = 0; 
    while (number > 0) { 
     int digit = number%10; 
     number = number/10; 
     reverse = reverse*10+remain; 
    } 
    return reverse == original; 
} 
+0

ここにコメントすることはできません。 "2 3 5 7 11 313 ..."を取得するために実際に実行したコードを含めるように質問を編集してください。なぜプログラムがソースなしで正しく動作しないのかを知ることは難しいです。 – Paul

1
/* Palindrome Program In JAVA 
    Credit: Code Nirvana (www.codenirvana.in) 
*/ 
import java.util.Scanner; 
class Palindrome{ 
    public static void main(String args[]){ 
     System.out.print("Enter Number: "); 
     Scanner read = new Scanner(System.in); 
     int num = read.nextInt(); 
     int n = num; 
     //reversing number 
     int rev=0,rmd; 
     while(num > 0) 
     { 
     rmd = num % 10; 
     rev = rev * 10 + rmd; 
     num = num/10; 
     } 
     if(rev == n) 
     System.out.println(n+" is a Palindrome Number!"); 
     else 
     System.out.println(n+" is not a Palindrome Number!"); 
    } 
} 
1

をし、負の数の場合は、負の数の場合も同様です。

private static boolean isPalindrome(int n) { 
    int orignal = n, reversed = 0; 
    while (n != 0) { 
     reversed = (reversed * 10) + (n % 10); 
     n /= 10; 
    } 
    return reversed == orignal; 
} 
0

入力が巨大または文字列の場合はどうなりますか?

以下のコードはどの入力でも動作するはずです。ここで

private boolean isPalindrome(String s) { 
    int lo = 0, hi = s.length()-1; 
    while(lo < hi) { 
     if(s.charAt(lo) == s.charAt(hi)) { 
      lo++; hi--; 
     } else { 
      return false; 
     } 
    } 
    return true; 
} 
0
import java.util.Scanner; 

/*if given number is same with reverse number 
    then this number is called as Palindrome number. */ 

public class PalindromeNumber { 
public static void main(String args[]) 
{ 
    int input,store,output=0; 
    Scanner in=new Scanner(System.in); 
    System.out.println("Enter a number for check."); 
    input=in.nextInt(); 
    store=input; 
    while (input!=0) 
    { 
    output=output*10; 
    output=output+input%10; 
    input=input/10; 
    } 
    System.out.println(output); 
    if (output == store) 
    { 
     System.out.println("This is a palindrome number."); 
    } 
    else 
    { 
     System.out.println("This is not a palindrome number."); 
    } 

    in.close(); 
} 

}

0
import java.util.*; 
/* 
@ Author 12CSE54 
@ Date 29.10.14 
*/ 
public class cpalindrome 
{ 
public static void main(String ar[])throws Exception 
{ 
Scanner s=new Scanner(System.in); 
System.out.println("Enter the number\n"); 
int n=sc.nextInt(); 
int s=0,r; 
while(n>0) 
{ 
r=n%10; 
s=(s*10)+r; 
n/=10; 
} 
if(n==s) 
System.out.println("palindrome\n"); 
else 
System.out.println("not a palindrome"); 
} 
} 
0

回文番号を確認するためのプログラムは、Javaである:

public static void main(String[] args) { 


    int num, temp, remainder, reverse = 0; 
    System.out.println("Enter an integer"); 

    try(Scanner sc = new Scanner(System.in);) 
    { 
    num = sc.nextInt(); 
    } 
    temp = num; 
    while (num > 0) 
    { 
     remainder = num % 10; 
     reverse = reverse * 10 + remainder; 
     num /= 10; 
    } 
    System.out.println("\nGiven number is " + temp + ". Its reverse is " + reverse); 
    if (temp == reverse) 
     System.out.println("\nNumber is a palindrome"); 
    else 
     System.out.println("\nNumber is not a palindrome"); 

} 

参考:

http://topjavatutorial.com/java/java-programs/java-program-to-reverse-a-number-and-check-if-it-is-palindrome/

0
import java.util.*; 
public class PalPrime 
{ 
    public boolean prime(int n) 
    { 
     int c=0; 
     for(int i=1;i<=n;i++) 
     { 
      if(n%i==0) 
       c++; 
     } 
     if(c==2) 
      return true; 
     else 
      return false; 
    } 

    public boolean palindrome(int n) 
    { 
     int rev=0,temp=n; 
     while(temp!=0) 
     { 
      rev=rev*10+(temp%10); 
      temp=temp/10; 
     } 
     if(rev==n) 
      return true; 
     else 
      return false; 
    } 

    public static void main(String args[]) 
    { 
     Scanner ob=new Scanner(System.in); 
     System.out.println("Enter number to be checked"); 
     int num=ob.nextInt(); 
     PalPrime obj=new PalPrime(); 
     if(obj.prime(num)==true && obj.palindrome(num)==true) 
      System.out.println(num+" is a Prime Palindrome i.e. a PalPrime Number"); 
     else 
      System.out.println(num+" is not a PalPrime Number"); 
    } 
} 

TRY THIS!

+1

StackOverflowへようこそ。答えが元のポスターの問題をどのように解決するかを説明すると、一般的に役立ちます。また、すべてのコードがコードとしてフォーマットされているわけではないため、フォーマットを確認してください。読みにくいです。 – betseyb

関連する問題