本文目錄一覽:
JAVA中的迴文是什麼一回是?
“迴文數”是一種數字.如:98789, 這個數字正讀是98789,倒讀也是98789,正讀倒讀一樣,所以這個數字
就是迴文數.
任意某一個數通過以下方式相加也可得到
如:29+92=121 還有 194+491=685,586+685=1271,1271+1721=2992
不過很多數還沒有發現此類特徵(比如196,下面會講到)
另外個別平方數是迴文數
1的平方=1
11的平方=121
111的平方=12321
1111的平方=1234321
。
。
。
。
依次類推
3×51=153
6×21=126
4307×62=267034
9×7×533=33579
上面這些算式,等號左邊是兩個(或三個)因數相乘,右邊是它們的乘積。如果把每個算式中的「×」和「=」去掉,那麼,它們都變成迴文數,所以,我們不妨把這些算式叫做「迴文算式」。還有一些迴文算式,等號兩邊各有兩個因數。請看:
12×42=24×21
34×86=68×43
102×402=204×201
1012×4202=2024×2101
不知你是否注意到,如果分別把上面的迴文算式等號兩邊的因數交換位置,得到的仍是一個迴文算式,比如:分別把「12×42=24×21」等號兩邊的因數交換位置,得到算式是:
42×12=21×24
這仍是一個迴文算式。
還有更奇妙的迴文算式,請看:
12×231=132×21(積是2772)
12×4032=2304×21(積是48384)
這種迴文算式,連乘積都是迴文數。
四位的迴文數有一個特點,就是它決不會是一個質數。設它為abba,那它等於a*1000+b*100+b*10+a,1001a+110b。能被11整除。
六位的也一樣,也能被11整除
還有,人們藉助電子計算機發現,在完全平方數、完全立方數中的迴文數,其比例要比一般自然數中迴文數所佔的比例大得多。例如11^2=121,22^2=484,7^3=343,11^3=1331,11^4=14641……都是迴文數。
人們迄今未能找到五次方,以及更高次冪的迴文數。於是數學家們猜想:不存在nk(k≥5;n、k均是自然數)形式的迴文數。
在電子計算器的實踐中,還發現了一樁趣事:任何一個自然數與它的倒序數相加,所得的和再與和的倒序數相加,……如此反覆進行下去,經過有限次步驟後,最後必定能得到一個迴文數。
這也僅僅是個猜想,因為有些數並不「馴服」。比如說196這個數,按照上述變換規則重複了數十萬次,仍未得到迴文數。但是人們既不能肯定運算下去永遠得不到迴文數,也不知道需要再運算多少步才能最終得到迴文數。
Java語言如何判斷一個字元串是否迴文
Java語言判斷一個字元串是否迴文可以通過下面的函數進行判斷:
import java.util.Scanner;
public class huiwen
{public static void main(String args[])
{Scanner sca=new Scanner(System.in);
String str=sca.nextLine();
int a=str.length();
int middle=a/2,i=3;
//char c1=(char) a,c2=(char) a;
for(i=0;imiddlestr.charAt(i)==str.charAt(a-1-i);i++)
{}
if(imiddle)
System.out.println(str+”不是迴文”);
else
System.out.println(str+”是迴文”);}}
擴展資料:
c/c++判斷一個字元串是否迴文的方法:
#include iostream
#include string
using namespace std;
int main()
{string str; int i,j,l;int flag = 1;
while (cin str)
{ l = str.length(); for (i = 0,j = l-1; i = j; i++,j–)
{ if (str[i] != str[j])
{ flag = 0;break; }}
if (flag)
cout “YES” endl;
else
cout “NO” endl;
flag = true;}
return 0;}
參考資料:百度百科-迴文串
java編程題判斷迴文數
Scanner in = new Scanner(System.in);
System.out.println(“請輸入一個整數N=:”);
int input = in.nextInt();
int i = 0;
int sum = 0;
int record=input;
while(true){
i = input%10;
sum =sum*10+i;
input /= 10;
if(input==0) break;
}
if(sum==record)System.out.println(“是迴文”);
else System.out.println(“不是迴文”);
用JAVA實現迴文十進位數
public class Test {
/**
* 判斷是否迴文
*/
public static boolean isPalindrome(String num){
return num.equals(new StringBuffer(num).reverse().toString());
}
public static void main(String[] args) {
int num = 10;
while(true){
if(isPalindrome(String.valueOf(num)) //十進位
isPalindrome(Integer.toBinaryString(num)) //二進位
isPalindrome(Integer.toOctalString(num))){ //八進位
System.out.println(num);
System.out.println(Integer.toBinaryString(num));
System.out.println(Integer.toOctalString(num));
break;
}
else{
num ++;
}
}
}
}
把數字轉化成字元串啊。
答案是
585 (10進位)
1001001001 (2進位)
1111 (8進位)
java編寫迴文數
按照你的要求編寫的,輸出從0到max中用二進位表示和十進位表示都是迴文數的Java程序如下:
import java.util.Scanner;
public class CCF {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print(“請輸入一個整數:”);
int max=sc.nextInt();
for(int i=0;i=max;i++){
String num = String.valueOf(i);
String num2=Integer.toBinaryString(i);
String reversenum=new StringBuffer(num).reverse().toString();
String reversenum2=new StringBuffer(num2).reverse().toString();
if(reversenum.equals(num) reversenum2.equals(num2)){
System.out.println(i+”用二進位表示”+num2+”和十進位表示”+i+”都是迴文數”);
}
}
}
}
運行結果:
請輸入一個整數:1000
0用二進位表示0和十進位表示0都是迴文數
1用二進位表示1和十進位表示1都是迴文數
3用二進位表示11和十進位表示3都是迴文數
5用二進位表示101和十進位表示5都是迴文數
7用二進位表示111和十進位表示7都是迴文數
9用二進位表示1001和十進位表示9都是迴文數
33用二進位表示100001和十進位表示33都是迴文數
99用二進位表示1100011和十進位表示99都是迴文數
313用二進位表示100111001和十進位表示313都是迴文數
585用二進位表示1001001001和十進位表示585都是迴文數
717用二進位表示1011001101和十進位表示717都是迴文數
【JAVA】:迴文數字
import java.util.Scanner;
public class Main{
static final int start = 10001;
static final int end = 999999;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t;
StringBuilder sb;
int sum;
boolean su;
while (sc.hasNextInt()) {
su = false;
t = sc.nextInt();
for (int i = start; i = end; i++) {
sum = 0;
sb = new StringBuilder(String.valueOf(i));
if (sb.toString().equals(sb.reverse().toString())) {
for (int j = 0; j sb.length(); ++j) {
sum += sb.charAt(j) – ‘0’;
}
if (sum == t) {
su = true;
System.out.println(i);
}
}
}
if (!su) {
System.out.println(-1);
}
}
sc.close();
}
}
如果不能AC,優化一下: 對每個i,轉為(字元或整數)數組,對數組從索引0到長度的一半遍歷,判斷對稱位置是否相同,且各位數字和是否符合要求.
原創文章,作者:ONPI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139773.html