判断一个数是否为回文数或者打印特定范围的回文数。

回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。

 1 public class PracticeDemo {
 2     /**
 3      *@Function: isPalindrome
 4      *@Description:判断1个数是否为回文数(一个数正着读和反着读一样)。
 5      *@Input:一个整型数
 6      *@Return_Type: boolean
 7      *@Return:判断是否为回文花数(true和false)
 8      *@Other:利用字符串知识点来解决
 9      *2020年2月18日:
10       *上午11:54:15
11      */
12     public static boolean isPalindrome(int x)
13     {
14         String s = ""+x; //java支持字符串相加
15         for(int i = 0;i < s.length()/2;i++)
16         {
17             if(s.charAt(i) != s.charAt(s.length()-1-i))//提取前后位置的字符串
18             return false;
19         }
20         return true;
21     }
22     //同上
23     public static boolean isPalindrome1(int x)
24     {
25        if(x < 0)
26        {
27          return false;
28        }
29        int temp = 1;
30        int a = x;
31        while(a >= 10)//1001
32         {
33           temp *= 10; //高位权值
34           a /= 10; //为找到最高权值做铺垫
35         }
36
37        while(x != 0)
38         {
39           if(x%10 != x/temp) //最后一位和最高位比较
40            {
41              return false;
42            }
43           x = x % temp / 10; //x变为去掉最前面一位和最后一位
44           temp /= 100;//每次去掉两个数,位权值减低100
45         }
46        return true;
47      }
48    /**
49     *@Function:PrintPalindrome
50     *@Description:打印所输进范围的回文数
51     *@Input:两个整型数,表示x~y范围
52     *@Output:x~y范围的回文数
53     *@Return_Type:void
54     *@Return:void
55     *@Other:利用字符串
56     *2020年2月18日:
57     *下午12:04:15
58    */
59    public static void PrintPalindrome(int x ,int y)
60     {
61       for(int i = x;i < y+1;i++)
62        {
63          int is = 1;//标志数 或者标号M(在第一个for前面M:)
64          String l = "" + i;
65          for(int j = 0;j < l.length()/2;j++)
66          {
67             if(l.charAt(j) != l.charAt(l.length()-1-j))
68             {
69                 is = -1;
70              //continue M; 直接跳到M标号处
71             }
72          }
73          if(-1 != is)
74             System.out.print(i+" ");
75       }
76    }
77  public static void main(String[] args) {
78     Scanner input = new Scanner(System.in);
79     System.out.println("请您输入所要求回文数的范围:");
80     int x = input.nextInt();
81     int y = input.nextInt();
82     //System.out.println(isPalindrome(x));
83     //System.out.println(isPalindrome1(x));
84     PrintPalindrome(x,y);
85   }
86  }

原文地址:https://www.cnblogs.com/YangK123/p/12325669.html

时间: 2024-11-02 10:43:17

判断一个数是否为回文数或者打印特定范围的回文数。的相关文章

判断一个数是否为回文数,字符串是否为回文字符串

使用C语言编写程序 判断一个数是否为回文数.(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数). 要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等来判读. 具体实现如下: void Practice() { int num, value, flag, var; value = 0; flag = 1; scanf("%d", &num); var = num; while(num) {//value存储num

【c语言】判断一个数是不是回文数

//判断一个数是不是回文数 #include <stdio.h> #include <assert.h> int panduan(int *p) { int t = 0; int n = *p; assert( *p != NULL ); //每次取出最后一个数乘10加到前边去 while( *p != NULL ) { t = t * 10 + *p % 10; *p = *p / 10; } //如果是回文数就会相等 if( t==n ) { return 1; } else

判断一个数的n进制是不是回文数

#include<stdio.h> int circle(int m,int n)//该函数判断m的n进制数是否为回文数 { int s=0,l=m; while(l) { s=s*n+l%n;//该语句是反顺序计算数值 l/=n; } return s==m;//如果是回文数,那么正反顺序的数字应该是相等的 } void main() { int num[]={434,783,909}; int sys[]={2,8,10,16}; int i,j; for(i=0;i<3;i++)

判断一个数中最大回文数的长度

判断一个数中最大回文数的长度 :例如12332112345654321中最大的回文数是12345654321,长度为11 public static void palindrome(String str) { int len = str.length(); int max = 1; for(int i = 1; i < len; i++){ int low = i-1; //偶数情况 int high = i; while(low >= 0 && high < len &

【C语言】判断一个数是否为回文字符串

//判断一个数是否为回文字符串 #include <stdio.h> int fun(char *str) { int len=strlen(str); int i; for(i=0;i<len;i++) { if(str[i]==(str[len-1])) len--; else return -1; } return 1; } int main () { char p[]="abcwecba"; puts(p); printf("%d\n",f

判断一个数(小于10位)的位数。输入999,则输出 “它是个3位的数!”

判断一个数(小于10位)的位数. 输入999,则输出 “它是个3位的数!” -------------------------------------------------------------------------- public class HelloWorld{public static void main(String[] args){int num = 999;int count = 0; if (num >= 0  && num<=999999999){ wh

Java判断一个数是不是快乐数

快乐数的定义: 快乐数(happy number)有以下的特性: 在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1. 以十进制为例: 2 8 → 22+82=68 → 62+82=100 → 12+02+02=1 3 2 → 32+22=13 → 12+32=10 → 12+02=1 3 7 → 32+72=58 → 52+82=89 → 82+92=145 → 12+42+52=42 → 42+22=20 → 22+02=

判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限)

题目:判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限) 例如:第一行输入目标数x,第二行再输入一个数组(每个数用空格隔开),如果能则输出1,不能则输出-1: 输入例1: 20 2 3 5 7 输出: 1 解释:20 = 2*2*5,可以组成,所以输出1. 输入例2: 20 3 5 7 输出: -1 解释:无法组成,所以输出-1. 解题思路:转化成完全背包问题来解决(因为每个因子都可以使用无限次) #include <iostream> #include <bits/s

如何判断一个数是2的幂

如何判断一个数是2的幂,主要是要找出2的幂次方的数的特点.我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0.(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1).因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可. bool powerof2(unsigned in