java中的回文数

时间:2011-06-19 23:25:49

标签: java

我是java的新手,我想知道如何在不使用字符串和方法的情况下打印素数回文。

这是我到目前为止所拥有的。我想在50之前打印每个主要回文数。我只使用素数做了这个并且它正在工作但是当我在回文中加入时它没有用。

编辑:我在int original = number中添加了一个答案,但我的输出总是2,3,5,7,11而已。

EDIT2(另外1个问题):我将值更改为1000,输出为2 3 5 7 11 313 353 373 383 727 757 787 797 919 929.输出正确但不是101,131,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;

}

}

9 个答案:

答案 0 :(得分:3)

只有一个2位数的主要回文:11。每隔2位数字可被11整除。您的输出是正确的。

你的isPalindrome非常接近: 1)在循环外移动相等性检查 2)使用while循环。使用“for”导致省略回文模式1X1,2XX2等。 3)不要忘记保留论点:

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;
}

答案 1 :(得分: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;
}

答案 2 :(得分: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!"); 
     } 
}

答案 3 :(得分: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;
}

答案 4 :(得分: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;
}

答案 5 :(得分: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();
}

}

答案 6 :(得分: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");
}
}

答案 7 :(得分:0)

unistd.h

尝试这个!

答案 8 :(得分:0)

这很容易理解

public class StringDemo {

 public static void main(String args[]) {
  if(palindrome("1211")){
      System.out.println("Yes IT IS palindrome");
  }
  if(palindrome("121")){
      System.out.println("Yes IT IS palindrome");
  }
  }
  public static boolean palindrome(Object o){
   String s=(String)o;
   boolean result=true;
   int temp=s.length()-1;
   for(int c=0;c<temp;c++){
       if(s.charAt(c)==s.charAt(temp)){
           temp--;
           //System.out.println("Pallidrom start "+ s.charAt(c));
           //System.out.println("Pallidrom end "+ s.charAt(temp));
       }else{
           System.out.println("NOT palindrome");
           return false;
       }
    }
    return result;
 }
}

结果是

enter image description here